{ "info": { "author": "Piti Ongmongkolkul", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.7" ], "description": "# StrongJson\n[![PyPI](https://img.shields.io/pypi/v/strong_json)](https://pypi.org/project/strong-json/)\n[![Build Status](https://travis-ci.com/piti118/strong-json.svg?branch=master)](https://travis-ci.org/piti118/strong-json)\n[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/piti118/strong_json_notebook/master)\n[![codecov](https://codecov.io/gh/piti118/strong-json/branch/master/graph/badge.svg)](https://codecov.io/gh/piti118/strong-json)\n\nA more faithful python json encoder/decoder.\n\n# Install\n\n```\npip install strong_json\n```\nor directly from this repository\n```\npip install git+git://github.com/piti118/strong-json.git\n```\n\n## Features\nIn addition to the standard json.dumps/loads, this module offer the following additional behavior.\n\n- Custom class support outside the box(overridable via ToJsonable interface).\n - ```python\n class User:\n def __init__(self, first, last):\n self.first = first\n self.last = last\n ```\n- Preserve type information.\n - ```User('f', 'l')``` -> ```{\"__type__\": \"User\", \"first\":\"f\", \"last\":\"l\"}```\n\n\n- More faithful dictionary dumps/loads\n - Treat dictionary as OrderedDictionary when encode. See [Python 3.6 Release Note](https://docs.python.org/3/whatsnew/3.6.html#new-dict-implementation).\n - ```{'a':'b', 'c':'d'}``` ->\n ```json\n {\n \"__type__\": \"dict\",\n \"__data__\": [\n {\"key\": \"a\", \"value\": \"b\"},\n {\"key\": \"c\", \"value\": \"d\"}\n ]\n }\n ```\n - Decoder will accept both traditional form(```{'a':'b','c':'d'}```) and the form above.\n - Allow any hashable object as key\n - ```{User('f', 'l'): 1, User('a','b'):2}``` ->\n ```json\n {\n \"__type__\": \"dict\",\n \"__data__\": [\n {\n \"key\": {\"__type__\": \"User\", \"first\": \"f\", \"last\":\"l\"}, \n \"value\": 1\n },\n {\n \"key\": {\"__type__\": \"User\", \"first\": \"a\", \"last\":\"b\"}, \n \"value\": 2\n }\n ]\n } \n ```\n- Distinguish tuple from List\n - ```[1,2,3]``` -> ```[1,2,3]```\n - ```(1,2,3)``` -> ```{\"__type__\":\"tuple\", \"__data__\":[1,2,3]}```\n\n- Custom class decoder whitelist via class_map\n - ```python\n from strong_json import StrongJson\n s = {'__type__': 'User', 'first':'f', 'last':'l'}\n class_map = {'User', User}\n custom_json = StrongJson(class_map=class_map)\n custom_json.from_json(s)\n ```\n - By default, strong json pass all the argument by name to the constructor.\n - You could also override ```StrongJson``` or implement interface ```FromJsonable``` for custom decoder.\n - You could also use strong_json.ClassMapBuilder to save some typing.\n- Support for date and datetime.\n - ```datetime.date(2019,8,23)``` -> \n ```json\n {\n \"__type__\": \"date\", \n \"year\": 2019, \n \"month\": 8, \n \"day\": 23\n }\n ```\n- Support for Enum.\n - ```python\n from enum import Enum\n class Color(Enum):\n RED='redd'\n BLUE='blueee'\n strong_json.to_json(Color.RED)\n ``` \n ->\n ```json\n {\"__type__\": \"Color\", \"__data__\":\"RED\"}\n ```\n- Support for numpy and pandas. (via `to_dict` and `tolist`)\n- `nan, inf, -inf` are dumped as dict ex: `{\"__type__\":\"float\", \"__data__\":\"nan\"}`\n# Basic Usage\n[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/piti118/strong_json_notebook/master)\n\n\n\n## From Object to JSON\n### Builtin Object\n```python\nfrom strong_json import strong_json\nobj = {'a': [1,2,3], 'b':[2,3,4]}\ns = strong_json.to_json(obj)\n\n# if you want indentation you could do\ns_indent = strong_json.to_json(obj, indent=2)\n```\n### Custom Class\n\n#### SimpleClass\nCustom class works out of the box \n```python\nfrom strong_json import strong_json\n\nclass SimpleClass:\n def __init__(self, msg):\n self.msg = msg\n\nobj = SimpleClass('hello')\ns = strong_json.to_json(object)\n```\nwhich produce json of the form\n```json\n{\n \"__type__\": \"SimpleClass\",\n \"msg\": \"hello\"\n}\n```\n\n#### Custom Encoder.\nIf you don't like the default class encoder you can create new one by implementing ```ToJsonable``` interface.\n```python\nfrom strong_json import strong_json, ToJsonable\n\nclass User(ToJsonable):\n def __init__(self, first, last):\n self.first = first\n self.last = last\n\n # this is where the magic happens.\n def to_json_dict(self, encoder: StrongJson) -> Dict[str, JSONPrimitive]:\n return {\n '__type__': 'User',\n 'first': encoder.to_json_dict(self.first),\n 'last': encoder.to_json_dict(self.last),\n 'full_name': encoder.to_json_dict(f\"{self.first} {self.last}\")\n }\n\nobj = User('hello', 'world')\ns = strong_json.to_json(object)\n```\nwhich produces json of the form\n```json\n{\n \"__type__\": \"User\",\n \"first\": \"hello\",\n \"last\": \"world\",\n \"full_name\": \"hello_world\"\n}\n```\n\n## From JSON to object\n\n### Builtin Object\n```python\nfrom strong_json import strong_json\ns = \"\"\"{\"a\": \"b\", \"c\":\"d\"}\"\"\"\nobj = strong_json.from_json(s)\n````\n\n### Custom Class\n```python\nfrom strong_json import StrongJson\n\nclass User: # it doesn't have to be ToJsonable\n def __init__(self, first, last):\n self.first = first\n self.last = last\n\ns = \"\"\"\n{\n \"__type__\": \"User\",\n \"first\": \"hello\",\n \"last\": \"world\"\n}\n\"\"\"\nclass_map = {'User': User}\ncustom_json = StrongJson(class_map=class_map)\nobj = custom_json.to_json(s, class_map)\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/piti118/strong-json", "keywords": "json encoder decoder", "license": "", "maintainer": "", "maintainer_email": "", "name": "strong-json", "package_url": "https://pypi.org/project/strong-json/", "platform": "", "project_url": "https://pypi.org/project/strong-json/", "project_urls": { "Homepage": "https://github.com/piti118/strong-json" }, "release_url": "https://pypi.org/project/strong-json/1.0.11/", "requires_dist": [ "pytest ; extra == 'dev'", "numpy ; extra == 'dev'", "pandas ; extra == 'dev'", "pytest ; extra == 'test'", "numpy ; extra == 'test'", "pandas ; extra == 'test'", "pytest-cov ; extra == 'test'" ], "requires_python": ">=3.6", "summary": "JSON Decoder and Encoder with type information.", "version": "1.0.11", "yanked": false, "yanked_reason": null }, "last_serial": 8633567, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "8e4ca82abf525783adab5c423d4216c7", "sha256": "0c9793e63fdbd584343c3e550f833817484825fdb98d3a7a7c59290ae3f3b537" }, "downloads": -1, "filename": "strong_json-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8e4ca82abf525783adab5c423d4216c7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 6642, "upload_time": "2019-10-03T14:14:55", "upload_time_iso_8601": "2019-10-03T14:14:55.879202Z", "url": "https://files.pythonhosted.org/packages/de/bf/ba2548cad1e010d90a3ce7ff8f8510f1846145c366acd3d9c9425d2e0b9a/strong_json-1.0.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "74679ff64ce170b02995f399282d63f8", "sha256": "aabb10732e7df46fa8748376e4008dd6682d0415a96dc31690e04abd474a701c" }, "downloads": -1, "filename": "strong_json-1.0.0.tar.gz", "has_sig": false, "md5_digest": "74679ff64ce170b02995f399282d63f8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 10051, "upload_time": "2019-10-03T14:14:59", "upload_time_iso_8601": "2019-10-03T14:14:59.258696Z", "url": "https://files.pythonhosted.org/packages/a0/97/3f0b6b6df99a4b5137ca4984a72ae37b4cb3746ce5d61cd54ba7289e43ce/strong_json-1.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "c7a1e0b2957f1063a01e63047224326e", "sha256": "7b937a5c0588ede73ead9db482be83bf002008f207361e584a5acdfb794e3fd6" }, "downloads": -1, "filename": "strong_json-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c7a1e0b2957f1063a01e63047224326e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 6655, "upload_time": "2019-10-03T15:18:57", "upload_time_iso_8601": "2019-10-03T15:18:57.443028Z", "url": "https://files.pythonhosted.org/packages/0c/d7/caf0dfd6ffc618085e5d30597915643cc3b4cff0a8f96859f897185e2d0f/strong_json-1.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "84a9e789587a7f12d17d869d67b15070", "sha256": "e90261f76aca8827978a971e1eb824d73c2ee5efd5cbecffb0aedfa420468e1b" }, "downloads": -1, "filename": "strong_json-1.0.1.tar.gz", "has_sig": false, "md5_digest": "84a9e789587a7f12d17d869d67b15070", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 10070, "upload_time": "2019-10-03T15:19:14", "upload_time_iso_8601": "2019-10-03T15:19:14.339016Z", "url": "https://files.pythonhosted.org/packages/ea/da/c9c4237c91ac683f2b23c8459cfc07f7d0f07919ec70bb39b9f0f61601a9/strong_json-1.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.10": [ { "comment_text": "", "digests": { "md5": "30019f04b60ff0c14aeffafcc89e56af", "sha256": "f9b3e381f37cf933bd84effd98b228da73b0e1e5e81794220be280c6d1d8e066" }, "downloads": -1, "filename": "strong_json-1.0.10-py3-none-any.whl", "has_sig": false, "md5_digest": "30019f04b60ff0c14aeffafcc89e56af", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 9005, "upload_time": "2019-12-03T10:44:01", "upload_time_iso_8601": "2019-12-03T10:44:01.288167Z", "url": "https://files.pythonhosted.org/packages/e1/31/957f0a7189649e85aae48c1d5606a33badb02807e94b8eb776150fefa7cd/strong_json-1.0.10-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "1.0.11": [ { "comment_text": "", "digests": { "md5": "b7a7fac3e8e4e6b0f31de49d6f184ee0", "sha256": "8c8b1ecebb16fe5a2993229593a174af101758d93b8bd039b48f5728542dd9f1" }, "downloads": -1, "filename": "strong_json-1.0.11-py3-none-any.whl", "has_sig": false, "md5_digest": "b7a7fac3e8e4e6b0f31de49d6f184ee0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 9133, "upload_time": "2020-01-04T17:57:53", "upload_time_iso_8601": "2020-01-04T17:57:53.288242Z", "url": "https://files.pythonhosted.org/packages/3a/0e/dcb1a826731404b2e0185c9bd7d9ef35efc21d518ac22156476875ccdd62/strong_json-1.0.11-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "63a66bc0f5fbd45932ea059ac39319b4", "sha256": "d9341842df51ee56c5724a0435af9eb01b2ca930fcc8d172e41ebc080a8701ca" }, "downloads": -1, "filename": "strong_json-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "63a66bc0f5fbd45932ea059ac39319b4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 6788, "upload_time": "2019-10-03T15:37:12", "upload_time_iso_8601": "2019-10-03T15:37:12.911169Z", "url": "https://files.pythonhosted.org/packages/9d/c6/82eff5390c49b9ce2067423bd0c60965968820d8bf0eef97aeb29bb137f5/strong_json-1.0.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "afb508a2cf96f22c3054f5c698a9bc0d", "sha256": "85ba6caacded59327e6f66f6599c288bcd68e72cecba5cd56aff85a048593937" }, "downloads": -1, "filename": "strong_json-1.0.2.tar.gz", "has_sig": false, "md5_digest": "afb508a2cf96f22c3054f5c698a9bc0d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 10206, "upload_time": "2019-10-03T15:37:17", "upload_time_iso_8601": "2019-10-03T15:37:17.830318Z", "url": "https://files.pythonhosted.org/packages/dc/61/038160f40c59828b9872906ed7e37e71c945f60c76689133f1de8ddc30a3/strong_json-1.0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "c32a4dbde6bc657aad8bd266b91e13c8", "sha256": "e6e46cae7c99771b142c2e3086cd487bedc0cfbc239685b45b91aa4dd1bc5159" }, "downloads": -1, "filename": "strong_json-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "c32a4dbde6bc657aad8bd266b91e13c8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 6846, "upload_time": "2019-10-03T17:33:34", "upload_time_iso_8601": "2019-10-03T17:33:34.963783Z", "url": "https://files.pythonhosted.org/packages/9f/26/d8524b0ca9bea67f6fad4cc49d9254ac0e3d0278fcf2ea4497453a4239d8/strong_json-1.0.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c32ca91fdb615637d3315dcd0774f58f", "sha256": "977b2d2867b06a2a6273b86149f36d87c47e9f3761b3c9f6e8dbacb818ee7b9c" }, "downloads": -1, "filename": "strong_json-1.0.3.tar.gz", "has_sig": false, "md5_digest": "c32ca91fdb615637d3315dcd0774f58f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 10306, "upload_time": "2019-10-03T17:33:37", "upload_time_iso_8601": "2019-10-03T17:33:37.114978Z", "url": "https://files.pythonhosted.org/packages/14/89/4a17ca2c94bbae7ba135c1ef0432d4aa6699e7121357372853bf0a6b60b0/strong_json-1.0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "a8fd5523bdf31f9625f9485662974b12", "sha256": "d609b504fd9a48742ccc09d7e006b21a79e0e9305785635613cb9198a91034bf" }, "downloads": -1, "filename": "strong_json-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "a8fd5523bdf31f9625f9485662974b12", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 7337, "upload_time": "2019-10-04T04:41:45", "upload_time_iso_8601": "2019-10-04T04:41:45.194440Z", "url": "https://files.pythonhosted.org/packages/13/ea/9d7627afbef937c95c33615af654902e154ba011598874ac5ee0c9324e1b/strong_json-1.0.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "dbb7064181f4f0fb85ee1e69d9d863d7", "sha256": "fb815de772f7d152f6304490146db4d2c38383a9994a7cd30f8c51122b76fd7c" }, "downloads": -1, "filename": "strong_json-1.0.4.tar.gz", "has_sig": false, "md5_digest": "dbb7064181f4f0fb85ee1e69d9d863d7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 11110, "upload_time": "2019-10-04T04:41:48", "upload_time_iso_8601": "2019-10-04T04:41:48.826393Z", "url": "https://files.pythonhosted.org/packages/c7/2c/ee89700192d579dd23051800bec59e61795f0651133c1af414b6b2f41976/strong_json-1.0.4.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "92ffe001407b0f2470bde63a28f21b86", "sha256": "4aa05046c14a4f9af95d32d0b49fbc45695e90f8e72cdbee8fd0da92cc0041e0" }, "downloads": -1, "filename": "strong_json-1.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "92ffe001407b0f2470bde63a28f21b86", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 7878, "upload_time": "2019-10-04T09:58:22", "upload_time_iso_8601": "2019-10-04T09:58:22.583083Z", "url": "https://files.pythonhosted.org/packages/50/7f/0d0e11fddbacc784a5fd9290185184220ea7d22a4c01111bd24771f111e2/strong_json-1.0.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ee1586530a615078b535c0627ca08274", "sha256": "8da3670d20a0d90098923b5a93c1a66eabf2347f10861faf28c38dc68632761e" }, "downloads": -1, "filename": "strong_json-1.0.5.tar.gz", "has_sig": false, "md5_digest": "ee1586530a615078b535c0627ca08274", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 11758, "upload_time": "2019-10-04T09:58:29", "upload_time_iso_8601": "2019-10-04T09:58:29.148998Z", "url": "https://files.pythonhosted.org/packages/53/45/d4c6a23fdf827e59bef1bde2396f6eac76aa2c04fe04316502bf44ddd147/strong_json-1.0.5.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "f7794fdffd31ff22714645b3bddf8864", "sha256": "8b1e97f1332ce02a010c984d0d205f0ab5c50019583ac35c1903e90730a07ad6" }, "downloads": -1, "filename": "strong_json-1.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "f7794fdffd31ff22714645b3bddf8864", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 8757, "upload_time": "2019-10-04T16:55:57", "upload_time_iso_8601": "2019-10-04T16:55:57.059527Z", "url": "https://files.pythonhosted.org/packages/2d/93/7b57cf844150683cd015b606f1609fb00ca06bc5711039f6ba2513460c65/strong_json-1.0.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b208e4f622384b711b6a16599fb179b3", "sha256": "3ae0d9505b13966a65d7fbb56e0e4ddc5390e5d2dbd6b66435ee330a1211bec6" }, "downloads": -1, "filename": "strong_json-1.0.6.tar.gz", "has_sig": false, "md5_digest": "b208e4f622384b711b6a16599fb179b3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 12688, "upload_time": "2019-10-04T16:56:02", "upload_time_iso_8601": "2019-10-04T16:56:02.932530Z", "url": "https://files.pythonhosted.org/packages/bf/5f/1696e7c7fdae3f7d511648161deddfeef5d5d253fa6771d414d60aac1825/strong_json-1.0.6.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "f00f13366869f277c26acfcdccd91a7c", "sha256": "e9950f4053379c1289e8bdfa3d5ecb5e350b10673c6af7257238caf4d7ed49bc" }, "downloads": -1, "filename": "strong_json-1.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "f00f13366869f277c26acfcdccd91a7c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 8909, "upload_time": "2019-10-11T04:43:11", "upload_time_iso_8601": "2019-10-11T04:43:11.190186Z", "url": "https://files.pythonhosted.org/packages/97/95/22caedb08596c51800e45865f2e5afd526a6555959c3e532e232cf817e5e/strong_json-1.0.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "054f333625b0d1fbb98cdfbf39dd62b6", "sha256": "c8aaba7924e627938aec5ad95fd93a08a8b3190f4cd6e23388ee43245386e8f2" }, "downloads": -1, "filename": "strong_json-1.0.7.tar.gz", "has_sig": false, "md5_digest": "054f333625b0d1fbb98cdfbf39dd62b6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 12838, "upload_time": "2019-10-11T04:43:20", "upload_time_iso_8601": "2019-10-11T04:43:20.758160Z", "url": "https://files.pythonhosted.org/packages/16/84/672e733333e5b33d9ba96ce7e1fdeda09ed870ff2d8a69622260faf91f7f/strong_json-1.0.7.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.8": [ { "comment_text": "", "digests": { "md5": "fe487872a4b64f6d1b5aa3c6a1ba1265", "sha256": "963ba3e5405b9d6f435a48505c5040e821fc0db602c9828bcc2c77548b72d67e" }, "downloads": -1, "filename": "strong_json-1.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "fe487872a4b64f6d1b5aa3c6a1ba1265", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 8952, "upload_time": "2019-10-24T10:40:30", "upload_time_iso_8601": "2019-10-24T10:40:30.578464Z", "url": "https://files.pythonhosted.org/packages/2b/ed/5d0d823dcdafc51ae4619af66bc568d893acf1ac675bed52c614984004ad/strong_json-1.0.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a04a28c3e02e7c0d4c47e0a27796daa9", "sha256": "4ae45c81cd7ccf15481e425d90a8be03a38b280ec016a1f278e9a454adcdadd7" }, "downloads": -1, "filename": "strong_json-1.0.8.tar.gz", "has_sig": false, "md5_digest": "a04a28c3e02e7c0d4c47e0a27796daa9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 12921, "upload_time": "2019-10-24T10:40:37", "upload_time_iso_8601": "2019-10-24T10:40:37.943890Z", "url": "https://files.pythonhosted.org/packages/35/77/b47cca0aab89cd40c1dea69c822924a236644a3861d3627d771d8648fe9e/strong_json-1.0.8.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.9": [ { "comment_text": "", "digests": { "md5": "9142ef9622a15d7b99cc631db0fbf831", "sha256": "86fe492c54d6657b84f7ef077fbb363b9418f63b4641569880ac530297a3b99a" }, "downloads": -1, "filename": "strong_json-1.0.9.macosx-10.9-x86_64.tar.gz", "has_sig": false, "md5_digest": "9142ef9622a15d7b99cc631db0fbf831", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 15690, "upload_time": "2019-11-12T05:49:18", "upload_time_iso_8601": "2019-11-12T05:49:18.707977Z", "url": "https://files.pythonhosted.org/packages/16/b5/ce9441c7e38e7597469a8466407fd82f68c170ed1fb38e19ccc8e7ab9d29/strong_json-1.0.9.macosx-10.9-x86_64.tar.gz", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6fb67bbab5acba8714fbbff5a06840d5", "sha256": "d07ab578fecad1a7f0a9576201fbedbe22c3b5ecc9fa822d8bcd2645356b8868" }, "downloads": -1, "filename": "strong_json-1.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "6fb67bbab5acba8714fbbff5a06840d5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 8962, "upload_time": "2019-11-12T05:49:16", "upload_time_iso_8601": "2019-11-12T05:49:16.620409Z", "url": "https://files.pythonhosted.org/packages/f3/0c/7f16787746e59a2c44ccb083c1156b37ca1d90966a03d302207666b0b657/strong_json-1.0.9-py3-none-any.whl", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b7a7fac3e8e4e6b0f31de49d6f184ee0", "sha256": "8c8b1ecebb16fe5a2993229593a174af101758d93b8bd039b48f5728542dd9f1" }, "downloads": -1, "filename": "strong_json-1.0.11-py3-none-any.whl", "has_sig": false, "md5_digest": "b7a7fac3e8e4e6b0f31de49d6f184ee0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 9133, "upload_time": "2020-01-04T17:57:53", "upload_time_iso_8601": "2020-01-04T17:57:53.288242Z", "url": "https://files.pythonhosted.org/packages/3a/0e/dcb1a826731404b2e0185c9bd7d9ef35efc21d518ac22156476875ccdd62/strong_json-1.0.11-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }