{ "info": { "author": "Jason Madden", "author_email": "open-source@nextthought.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: Zope3", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "============\n nti.schema\n============\n\n.. image:: https://img.shields.io/pypi/v/nti.schema.svg\n :target: https://pypi.python.org/pypi/nti.schema/\n :alt: Latest release\n\n.. image:: https://img.shields.io/pypi/pyversions/nti.schema.svg\n :target: https://pypi.org/project/nti.schema/\n :alt: Supported Python versions\n\n.. image:: https://travis-ci.org/NextThought/nti.schema.svg?branch=master\n :target: https://travis-ci.org/NextThought/nti.schema\n\n.. image:: https://coveralls.io/repos/github/NextThought/nti.schema/badge.svg\n :target: https://coveralls.io/github/NextThought/nti.schema\n\n.. image:: http://readthedocs.org/projects/ntischema/badge/?version=latest\n :target: http://ntischema.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\nnti.schema includes utilities for working with schema-driven\ndevelopment using `zope.schema `_.\n\nFor complete details and the changelog, see the `documentation `_.\n\nOverview\n========\n\nSome of the most useful features include:\n\n- ``nti.schema.interfaces.find_most_derived_interface`` for finding a\n bounded interface.\n- ``nti.schema.eqhash.EqHash`` is a class-decorator for creating\n efficient, correct implementations of equality and hashing.\n- ``nti.schema.field`` contains various schema fields, including a\n ``Variant`` type and more flexible collection types, all of which\n produce better validation errors.\n- ``nti.schema.fieldproperty`` contains field properties that can\n adapt to interfaces or decode incoming text. The function\n ``createDirectFieldProperties`` can assign just the necessary\n properties automatically.\n\n\n=========\n Changes\n=========\n\n1.13.1 (2019-06-11)\n===================\n\n- ``StrippedValidTextLine`` should accept single character lines.\n\n1.13.0 (2019-05-22)\n===================\n\n- Ensure ``StrippedValidTextLine`` correctly recognizes single character values\n as stripped. Previously, 'b' would have been rejected.\n\n1.12.0 (2018-10-10)\n===================\n\n- JSON schemas report the schema for ``IObject`` fields\n and the schemas for the possible fields in ``IVariant``.\n\n- Fields in JSON schemas may specify a JSON-serializable dictionary\n to be passed as the ``application_info`` schema value. See `issue 44\n `_.\n\n- JSON schemas now output more constraints automatically. See `issue\n 47 `_.\n\n1.11.0 (2018-10-10)\n===================\n\n- JSON schemas now include nested ``value_type`` and ``key_type`` for\n collection and mapping fields. See `issue 42\n `_.\n\n- JSON schemas now include (translated) ``title`` and ``description``\n values for fields. See `issue 41\n `_.\n\n\n1.10.0 (2018-10-04)\n===================\n\n- Add ``nti.schema.fieldproperty.field_name`` to compensate for the\n mangling that ``FieldPropertyStoredThroughField`` does.\n\n\n1.9.2 (2018-10-04)\n==================\n\n- Fix ``Variant`` and other implementations of ``IFromObject`` to stop\n passing known non-text values to ``fromUnicode`` methods. This only\n worked with certain fields (such as ``zope.schema.Number``) that\n could accept non-text values, usually by implementation accident,\n and could have surprising consequences. Instead, non-text values\n will be passed to the ``validate`` method.\n\n- Fix ``Variant`` to stop double-validating values. The underlying\n ``fromUnicode``, ``fromBytes`` or ``fromObject`` methods were\n supposed to already validate.\n\n1.9.1 (2018-10-03)\n==================\n\n- Make ``VariantValidationError`` and ``Variant`` have more useful\n string representations.\n\n- Make ``fromObject`` methods more gracefully handle an AttributeError\n raised by an underlying ``fromUnicode`` method on non-string input\n (such as None). This is especially helpful for ``Variant`` fields\n because they can catch the error and continue to the next field.\n\n- Fix ``Variant``, ``TupleFromObject``, ``DictFromObject``,\n ``ListFromObject`` and ``ListOrTupleFromObject`` to allow the\n ``missing_value`` (which defaults to ``None``) in their\n ``fromObject`` methods; passing that value in simply returns it\n without raising an exception if the field is not required. If the\n field is required, a ``RequiredMissing`` is raised. Previously the\n sequences raised a ``WrongType`` error, while ``Variant`` *may* or\n *may not* have raised an error, depending on the underlying fields\n in use.\n\n\n1.9.0 (2018-10-02)\n==================\n\n- ``Variant`` objects now automatically add ``fromObject`` support to\n ``ICollection`` and ``IMapping`` fields that do not already provide\n it, if their ``value_type`` (and ``key_type``) qualify by being\n either an ``Object`` field, or something that provides\n ``IFromObject`` or can be made to, such as a collection or mapping.\n\n\n1.8.0 (2018-09-28)\n==================\n\n- Add ``VariantValidationError``, an error raised by variant fields\n when none of their constituent fields could adapt or validate the\n value.\n\n\n1.7.0 (2018-09-19)\n==================\n\n- Add support for ``IFromBytes`` in zope.schema 4.8.0.\n\n- The ``Variant`` and ``ListOrTupleFromObject``, ``TupleFromObject``,\n ``DictFromObject`` fields all have tweaked behaviour in\n ``fromObject``. If the incoming value is a bytestring or text\n string, the underlying field's ``fromBytes`` and ``fromUnicode``\n will be called in preference to a ``fromObject``, if that method is\n implemented.\n\n- ``ValidSet`` and ``UniqueIterable`` now implement ``fromObject``.\n\n- All fields that implement ``fromObject`` now accept an ``Object``\n field for their ``value_type`` (and ``key_type`` in the case of\n ``DictFromObject``) and will attempt to adapt objects that do not\n provide the schema in ``fromObject``.\n\n1.6.0 (2018-09-18)\n==================\n\n- Adjust the deprecated ``zope.schema.interfaces.InvalidValue`` to be\n a simple alias for ``zope.schema.interfaces.InvalidValue`` (while\n preserving the constructor) for improved backwards compatibility.\n\n\n1.5.0 (2018-09-11)\n==================\n\n- Add support for zope.schema 4.7.0; drop support for older versions.\n\n\n1.4.2 (2018-09-10)\n==================\n\n- Fix the ``repr`` of ``nti.schema.interfaces.InvalidValue``. See\n `issue 26 `_.\n\n- ``nti.schema.jsonschema`` turns more abstract field types into\n concrete types. See `issue 29 `_.\n\n1.4.1 (2018-09-10)\n==================\n\n- Make ``nti.schema.interfaces.InvalidValue`` a class again. It is\n deprecated. See `issue 24 `_.\n\n\n1.4.0 (2018-09-10)\n==================\n\n- Drop support for ``dm.zope.schema`` fields, in particular the\n ``Object`` field. The validation performed by ``zope.schema.Object``\n is much improved.\n\n- Drop support for ``zope.schema`` older than 4.6.1.\n\n- Deprecate ``nti.schema.field.Number``.\n\n- Add support for Python 3.7.\n\n1.3.3 (2018-09-07)\n==================\n\n- Minor fix for changes in zope.schema 4.6.0 (import\n ``BeforeObjectAssignedEvent`` from its new, but still private, location).\n\n\n1.3.2 (2017-10-24)\n==================\n\n- Depend on zope.deferredimport >= 4.2.1 to be able to generate Sphinx\n documentation.\n- Clean up code to match PEP8.\n\n\n1.3.1 (2017-10-18)\n==================\n\n- Fix an ``UnboundLocalError`` on Python 3 in the ``Variant`` field.\n See `issue 14 `_.\n\n\n1.3.0 (2017-07-06)\n==================\n\n- Drop the Python 2 dependency on ``plone.i18n`` in favor of the new\n library ``nti.i18n``, which supports Python 3. If ``plone.i18n`` is\n installed, it *should not* be configured (ZCML), but its utility\n objects can be looked up by either interface.\n\n\n1.2.0 (2017-05-17)\n==================\n\n- Remove use of ``unicode_literals``.\n\n- Add support for Python 3.6.\n\n- The ``SchemaConfigured`` constructor doesn't hide errors when\n checking for properties on Python 2. See `issue 11\n `_.\n\n\n1.1.3 (2017-01-17)\n==================\n\n- Add info to minLength validation message.\n\n\n1.1.2 (2016-09-14)\n==================\n\n- Add ``Acquisition`` and ``zope.event`` as install dependencies.\n Previously they were only pulled in via the ``test`` extra.\n\n\n1.1.1 (2016-09-08)\n==================\n\n- Substantial speedups to the hash functions generated by ``EqHash``.\n- Substantial speedups to the equality functions generated by ``EqHash``.\n\n1.1.0 (2016-07-29)\n==================\n- Add support for Python 3. *Note* the countries vocabulary will not\n be complete on Python 3.\n- Drop the ``dolmen.builtins`` dependency.\n- Drop the ``dm.zope.schema`` dependency.\n- The ``plone.i18n`` dependency is Python 2 only (and can even be\n removed).\n- The matchers in ``nti.schema.testing`` have been moved to\n ``nti.testing.matchers``.\n- Using ``AdaptingFieldProperty`` will now raise the more specific\n ``SchemaNotProvided`` error instead of a ``TypeError`` if adapting\n the value fails.\n- ``EqHash`` has moved from ``nti.schema.schema`` to\n ``nti.schema.eqhash``. A compatibility shim remains.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/NextThought/nti.schema", "keywords": "zope schema", "license": "Apache", "maintainer": "", "maintainer_email": "", "name": "nti.schema", "package_url": "https://pypi.org/project/nti.schema/", "platform": "", "project_url": "https://pypi.org/project/nti.schema/", "project_urls": { "Homepage": "https://github.com/NextThought/nti.schema" }, "release_url": "https://pypi.org/project/nti.schema/1.13.1/", "requires_dist": [ "Acquisition", "nti.i18n", "six", "setuptools", "zope.event", "zope.schema (>=4.8.0)", "zope.i18n", "zope.i18nmessageid", "zope.vocabularyregistry", "zope.deprecation", "zope.deferredimport (>=4.2.1)", "Sphinx ; extra == 'docs'", "nti.testing ; extra == 'docs'", "repoze.sphinx.autointerface ; extra == 'docs'", "sphinx-rtd-theme ; extra == 'docs'", "pyhamcrest ; extra == 'test'", "nti.testing ; extra == 'test'", "zope.testrunner ; extra == 'test'" ], "requires_python": "", "summary": "Zope schema related support", "version": "1.13.1" }, "last_serial": 5387396, "releases": { "1.0.2a1": [], "1.1.0": [ { "comment_text": "", "digests": { "md5": "ea996800d96cf5513e6d7ad57c5dc34d", "sha256": "1d95193e15196493b791689078409a6b9b0347f88fac06364052b353d928b291" }, "downloads": -1, "filename": "nti.schema-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ea996800d96cf5513e6d7ad57c5dc34d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 36150, "upload_time": "2016-07-29T19:06:27", "url": "https://files.pythonhosted.org/packages/8a/5c/bcc9bdc0dad2b364b49423bea269c9db7ae13a130a21b8b4559042451a50/nti.schema-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e910173631c055b03734263e2976089d", "sha256": "727bd07a5ccbe1f10436b887b578a98743cd6dda9a3b89d6fded9bd0d4a25986" }, "downloads": -1, "filename": "nti.schema-1.1.0.tar.gz", "has_sig": false, "md5_digest": "e910173631c055b03734263e2976089d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33462, "upload_time": "2016-07-29T19:06:30", "url": "https://files.pythonhosted.org/packages/ec/9b/5e46ca8e6ff4bce4d7efe92370ba2d3aec3386a000fc8ead205e9901bc81/nti.schema-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "4ba83506c997713cd30e5c40b352d677", "sha256": "ed6d6691743eb767ac1cf13e1f7cb1e7c4b5f8e3b357a350f8cbd95e8f321e00" }, "downloads": -1, "filename": "nti.schema-1.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4ba83506c997713cd30e5c40b352d677", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 38643, "upload_time": "2016-09-09T00:40:56", "url": "https://files.pythonhosted.org/packages/21/37/517e2837d38aea26407c2c0e76be7739783098bc930846eb6a1ea40a1514/nti.schema-1.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "22417d6b69e4c8d63b1245f3023a5ad5", "sha256": "811e4de268f529fa41f80d99c0775923ff67610c4f3e715b0fea8fea23f546d2" }, "downloads": -1, "filename": "nti.schema-1.1.1.tar.gz", "has_sig": false, "md5_digest": "22417d6b69e4c8d63b1245f3023a5ad5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35896, "upload_time": "2016-09-09T00:40:59", "url": "https://files.pythonhosted.org/packages/7c/96/40fe1ef699112a15eb6d77e29ec14b4149127c9e580c2347a8a376bb268d/nti.schema-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "9c880429e7e13374ca64ac8ecaffac43", "sha256": "58abadc8679e635e0a95c99ffb60cb2a4441c0f168d6b84a784c861e4d2971f3" }, "downloads": -1, "filename": "nti.schema-1.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9c880429e7e13374ca64ac8ecaffac43", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 38673, "upload_time": "2016-09-14T19:25:55", "url": "https://files.pythonhosted.org/packages/0d/72/844da9b362a740188dc2f17d6b85cfd78c80115e1e5e458ec8e120ac8dd2/nti.schema-1.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "900bb8ce4f5360d49c2067dc2a174217", "sha256": "5ed041e6ef424f6680eb401ce0056db2990d1f1ba3f0f5fda8329fb5fb0a02d2" }, "downloads": -1, "filename": "nti.schema-1.1.2.tar.gz", "has_sig": false, "md5_digest": "900bb8ce4f5360d49c2067dc2a174217", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35995, "upload_time": "2016-09-14T19:25:57", "url": "https://files.pythonhosted.org/packages/64/da/002b1f637fc3fa079700714e750ef68515a051d89556d73838bdfa05e537/nti.schema-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "3a3240eeaa30c8a5b92902b83a6f16f9", "sha256": "917834a49f90e9276acb2ee7f5f48ed5c7c3356903cc0195870b28b68ed39adf" }, "downloads": -1, "filename": "nti.schema-1.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3a3240eeaa30c8a5b92902b83a6f16f9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 38794, "upload_time": "2017-01-17T15:04:57", "url": "https://files.pythonhosted.org/packages/67/e1/379126f69a1cd1db61f925cd0e982d052a4f898a98cd36989d7220718f1d/nti.schema-1.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6662c15fe1583373a573360f5317532a", "sha256": "a9b2821a355a8fb60b52787647e1e8602f81b2953f8304c543d72b0983ca33e0" }, "downloads": -1, "filename": "nti.schema-1.1.3.tar.gz", "has_sig": false, "md5_digest": "6662c15fe1583373a573360f5317532a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36043, "upload_time": "2017-01-17T15:04:59", "url": "https://files.pythonhosted.org/packages/dc/40/703ad11e9124e362605d216e2d853b80ab3a9d109877f62b4d9c397b0834/nti.schema-1.1.3.tar.gz" } ], "1.10.0": [ { "comment_text": "", "digests": { "md5": "93e7b5448e1e325436c69440c50c7b2e", "sha256": "85cf6bf05778d22e42efcd31ac3b17b028eaf4b5ff2887ff889ada88834b8895" }, "downloads": -1, "filename": "nti.schema-1.10.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "93e7b5448e1e325436c69440c50c7b2e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 46759, "upload_time": "2018-10-04T22:12:53", "url": "https://files.pythonhosted.org/packages/1a/13/41faa34a45a3f815dbab8fcc59fe651efdc3578391a917296938228177ef/nti.schema-1.10.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7c9452b81bf23fd3f5b9a89701f67623", "sha256": "33821c73e27a6e1bf1070342ddbf3b5f560de69a7c1d359f7be4a30f97ee6ad7" }, "downloads": -1, "filename": "nti.schema-1.10.0.tar.gz", "has_sig": false, "md5_digest": "7c9452b81bf23fd3f5b9a89701f67623", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50525, "upload_time": "2018-10-04T22:12:54", "url": "https://files.pythonhosted.org/packages/68/63/8e1112b5e109b613b3a0403bfea10b5c525ab6d977d97abdfb8609bd8c78/nti.schema-1.10.0.tar.gz" } ], "1.11.0": [ { "comment_text": "", "digests": { "md5": "775ae2dcac83039ece189aa08795bc31", "sha256": "113be9f1e205d84c70b8144b27e8e9d4857bb2e25a53be66380c6aacf57574e4" }, "downloads": -1, "filename": "nti.schema-1.11.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "775ae2dcac83039ece189aa08795bc31", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 47329, "upload_time": "2018-10-10T14:03:24", "url": "https://files.pythonhosted.org/packages/11/68/7694b40264a763b19276811329226321ed12e7eef33a528b4972d551f4f9/nti.schema-1.11.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f4421d114aff37d33e01245668002238", "sha256": "a243a1307d1e628392a1d99b2b800f70537af166153812ee1f693b3e0cff5328" }, "downloads": -1, "filename": "nti.schema-1.11.0.tar.gz", "has_sig": false, "md5_digest": "f4421d114aff37d33e01245668002238", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51280, "upload_time": "2018-10-10T14:03:26", "url": "https://files.pythonhosted.org/packages/c7/fd/e13f4f9d424254baf38948df39c33ab7ea7f76372fa410e13b17c54fd142/nti.schema-1.11.0.tar.gz" } ], "1.12.0": [ { "comment_text": "", "digests": { "md5": "5180f057a5bdf04b9a8b713e9a78e355", "sha256": "ea1a47f2e21dfb34d9ca9a154bd341d487b677e3caa9a29d257ef72db3ba9e70" }, "downloads": -1, "filename": "nti.schema-1.12.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5180f057a5bdf04b9a8b713e9a78e355", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 49564, "upload_time": "2018-10-10T19:44:34", "url": "https://files.pythonhosted.org/packages/b0/e1/3e500617b9b3135ad251ab972b900cbd6b708716102b90db6a1ad60921b2/nti.schema-1.12.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a947deb7a127c2f07766c720b59b7522", "sha256": "bb519ac6b01f1fb1c6a8e8d8f01e26c468c477e0ed0410b1fa485e7e40f900e9" }, "downloads": -1, "filename": "nti.schema-1.12.0.tar.gz", "has_sig": false, "md5_digest": "a947deb7a127c2f07766c720b59b7522", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53614, "upload_time": "2018-10-10T19:44:35", "url": "https://files.pythonhosted.org/packages/23/2c/3cfdf0cdecab578c98083dd585c622239b7bf04417d7c69b8c3cd482fbe3/nti.schema-1.12.0.tar.gz" } ], "1.13.0": [ { "comment_text": "", "digests": { "md5": "8e4ab8bb111f8d4997d9b645be3e62ff", "sha256": "6f3d0310ba302602b5b84ce90b4efbc0ce68ff4d009fc04e7311167e064da696" }, "downloads": -1, "filename": "nti.schema-1.13.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8e4ab8bb111f8d4997d9b645be3e62ff", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 50717, "upload_time": "2019-05-22T22:08:49", "url": "https://files.pythonhosted.org/packages/f3/17/73259fdd0a49f89589b98f64513fdc4c5ed8784a595a8e2b2d329072a96b/nti.schema-1.13.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "38fdc147d566640dc1556a2f3cacb4d1", "sha256": "83fb76327708c2d99a37d975d2b45d8cc2719ead09e34056c9b2d5d708eebccb" }, "downloads": -1, "filename": "nti.schema-1.13.0.tar.gz", "has_sig": false, "md5_digest": "38fdc147d566640dc1556a2f3cacb4d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51939, "upload_time": "2019-05-22T22:08:50", "url": "https://files.pythonhosted.org/packages/7c/0f/7a48396a0f2929b87aa25ba77d6f30cc7850010e57e0042162acd38750cc/nti.schema-1.13.0.tar.gz" } ], "1.13.1": [ { "comment_text": "", "digests": { "md5": "b9b27e71d9a94554adfdbbac859f7409", "sha256": "062fe5246a35dc52c9b5bd0a124adfc7a2549fd0b283bd1d06d4a2127c6db3fb" }, "downloads": -1, "filename": "nti.schema-1.13.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b9b27e71d9a94554adfdbbac859f7409", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 50827, "upload_time": "2019-06-11T16:34:34", "url": "https://files.pythonhosted.org/packages/3c/a5/97f3d46826dc195eae9391a3887567588c659054ab8ec2592805e441041b/nti.schema-1.13.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bab4e2b56a6db494f5014fe0ccae24d2", "sha256": "d38c2f2b0ef8dcb8e7dc7928a24ddf9371fb121653658b36422d0a2f015633fd" }, "downloads": -1, "filename": "nti.schema-1.13.1.tar.gz", "has_sig": false, "md5_digest": "bab4e2b56a6db494f5014fe0ccae24d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52108, "upload_time": "2019-06-11T16:34:36", "url": "https://files.pythonhosted.org/packages/93/ba/bf83444ef1237a49897e631739dbe988f9ab1ff706f521ec55f3fbaff4a3/nti.schema-1.13.1.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "5c8a4a262fb6c07c2a27d20144080d08", "sha256": "3460773c5561c8b125755099257e47d7dc98904a9bfd295501510071023fa1d4" }, "downloads": -1, "filename": "nti.schema-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5c8a4a262fb6c07c2a27d20144080d08", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 38853, "upload_time": "2017-05-17T13:34:12", "url": "https://files.pythonhosted.org/packages/fb/7b/397dc8734e03351d23819c4a959dff5bc2f9eb11152e5b2726c187a4ecc5/nti.schema-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "49c8a00cde172ee58223347d9c05270e", "sha256": "b0375ad905dbfc84fcc3a962fbdab5bace531404f5bc0793ebfed5f784ec9cac" }, "downloads": -1, "filename": "nti.schema-1.2.0.tar.gz", "has_sig": false, "md5_digest": "49c8a00cde172ee58223347d9c05270e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36350, "upload_time": "2017-05-17T13:34:14", "url": "https://files.pythonhosted.org/packages/b0/21/71c40762908ee708597fa581188fd1c62a158fb5560113fe742e953bed40/nti.schema-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "90da1adb13178b9c49789d13227efaf2", "sha256": "e2b523dd7d924af450f94a90e93dd88bdd1392f3a3d0ea6661c9979600e7e490" }, "downloads": -1, "filename": "nti.schema-1.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "90da1adb13178b9c49789d13227efaf2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 38546, "upload_time": "2017-07-06T22:56:57", "url": "https://files.pythonhosted.org/packages/4b/d0/b6f2b35df6af51a1af415ea76bf92d91c36fcc8e78a19358647809d4d898/nti.schema-1.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "656885b111687caae194b97cdcfe978e", "sha256": "76b4942ec7b5f656eb4ac6e108c3d168534b42cde8b13d67a4e4521ae6c8ec36" }, "downloads": -1, "filename": "nti.schema-1.3.0.tar.gz", "has_sig": false, "md5_digest": "656885b111687caae194b97cdcfe978e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36164, "upload_time": "2017-07-06T22:56:59", "url": "https://files.pythonhosted.org/packages/08/49/43dc7b60c272e557e983e0e775948ca4882a889cd44f4cfe2f9311a9fac7/nti.schema-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "06f408bd65edabe6e55d61da22915046", "sha256": "cab23ed00f4c68ace6bfc6eaf621ddbc690a4879d29432e22634df27e0b7ddbc" }, "downloads": -1, "filename": "nti.schema-1.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "06f408bd65edabe6e55d61da22915046", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39108, "upload_time": "2017-10-18T16:43:31", "url": "https://files.pythonhosted.org/packages/b5/68/b2c210056f8b32a9e8ef06ad41b4acdce53472768ba16e9e38434c8913a2/nti.schema-1.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d5dcf7882e8998a2248928fd39b05f6f", "sha256": "d10de2b303f0ff4fb8ff6ede9035357c987152eba686b70bc29934d02aceb4fa" }, "downloads": -1, "filename": "nti.schema-1.3.1.tar.gz", "has_sig": false, "md5_digest": "d5dcf7882e8998a2248928fd39b05f6f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36850, "upload_time": "2017-10-18T16:43:33", "url": "https://files.pythonhosted.org/packages/be/64/69e8a1b9400c89a35e442f420744c0c3a824d5dc1089bb6937ddd0f6cc57/nti.schema-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "6fe5da1a10af8adf610e2b1b5f29e99f", "sha256": "29061b8c0a4b87d0bf00fca2adfc78191f2ee3dbe2e0961c043c57445d4f6cec" }, "downloads": -1, "filename": "nti.schema-1.3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6fe5da1a10af8adf610e2b1b5f29e99f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 42003, "upload_time": "2017-10-24T13:29:26", "url": "https://files.pythonhosted.org/packages/12/90/3acf74ddae990246ac3682e472694caa373bfade083097db601d1887f6b0/nti.schema-1.3.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5be88cb72d17446bd21a6f99027febc4", "sha256": "dba39ba73c0012ac2a3bcc35ae2ad25a22db5779c80de8466cbe834e62abd3c8" }, "downloads": -1, "filename": "nti.schema-1.3.2.tar.gz", "has_sig": false, "md5_digest": "5be88cb72d17446bd21a6f99027febc4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40105, "upload_time": "2017-10-24T13:29:28", "url": "https://files.pythonhosted.org/packages/be/21/ff98b4caecaaf8d98787d2caac64320ac72e6d54cb8280f71f90ab2c72f0/nti.schema-1.3.2.tar.gz" } ], "1.3.3": [ { "comment_text": "", "digests": { "md5": "b6ffc4eafbd9d77ba84a4f9bd9266ac4", "sha256": "459c77f642c922360e4813710273d96057ea22a76feb3d6cd845af0d003b5874" }, "downloads": -1, "filename": "nti.schema-1.3.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b6ffc4eafbd9d77ba84a4f9bd9266ac4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 39457, "upload_time": "2018-09-07T19:24:19", "url": "https://files.pythonhosted.org/packages/57/1f/487d6516e592503ab8e3f26542fd2acd61f2f0bc1d431584cfe1ee3f1722/nti.schema-1.3.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "29194067720c9d736f9adc677ad76b24", "sha256": "6f310e8dab9dc92b3109996b32ce18f5918df852c64f766ae3479a706d314536" }, "downloads": -1, "filename": "nti.schema-1.3.3.tar.gz", "has_sig": false, "md5_digest": "29194067720c9d736f9adc677ad76b24", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40361, "upload_time": "2018-09-07T19:24:20", "url": "https://files.pythonhosted.org/packages/1e/3f/9ad09f70aa0b6ae4310965ff686df52cae556697bcf5f9e07a62265c012a/nti.schema-1.3.3.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "ef39d4e5bf2b5aaec9faafcdb48866a0", "sha256": "344ae8d51a7430c4fdbb062f8070bbc9219def37be27bb3b51dfe69cb4a93448" }, "downloads": -1, "filename": "nti.schema-1.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ef39d4e5bf2b5aaec9faafcdb48866a0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 40346, "upload_time": "2018-09-10T11:45:29", "url": "https://files.pythonhosted.org/packages/76/97/4fd995684462a5ca423ed839239b8032dd98c067c3a1511b0b61c416e611/nti.schema-1.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4162c49260b0160c85b730e9e8fc4e03", "sha256": "b54e6d40fb026337b54bdadb4389a0b34baffb05aea238ad613c281c59c25403" }, "downloads": -1, "filename": "nti.schema-1.4.0.tar.gz", "has_sig": false, "md5_digest": "4162c49260b0160c85b730e9e8fc4e03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41327, "upload_time": "2018-09-10T11:45:31", "url": "https://files.pythonhosted.org/packages/f2/68/5be422988bc6142ac21ce6711c3e64ffb83df8588620a5d6fa7acdcfc508/nti.schema-1.4.0.tar.gz" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "cba5a86180fd08de01ae45d7553a5803", "sha256": "668ed7c4e31832a81eee4db77dac7946a3a842ba5d4322d68ab26e68614d57fe" }, "downloads": -1, "filename": "nti.schema-1.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cba5a86180fd08de01ae45d7553a5803", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 40491, "upload_time": "2018-09-10T12:34:56", "url": "https://files.pythonhosted.org/packages/7d/01/12a65bac5a4b6d704bfe71361d0a2075cb1194523e32ca83d9b91581ee96/nti.schema-1.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d64ccd42c066fef9c576ca92a84a9091", "sha256": "de5110b500f37c98a0bd09b621d9f8f9a51d2f144a5c8bbf8198ea7e9c30ac70" }, "downloads": -1, "filename": "nti.schema-1.4.1.tar.gz", "has_sig": false, "md5_digest": "d64ccd42c066fef9c576ca92a84a9091", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41609, "upload_time": "2018-09-10T12:34:57", "url": "https://files.pythonhosted.org/packages/72/17/3b78d31182713ae6f0babd20b6522f817f18ff159d35b4e776c6ba740b46/nti.schema-1.4.1.tar.gz" } ], "1.4.2": [ { "comment_text": "", "digests": { "md5": "0d3db63358c49ba91866f9a5bd7b3a50", "sha256": "56e79424d427bc5bba73bfe219b63e4bd3673d130aa09f50ae6936353a5725e4" }, "downloads": -1, "filename": "nti.schema-1.4.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0d3db63358c49ba91866f9a5bd7b3a50", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 41094, "upload_time": "2018-09-10T20:52:30", "url": "https://files.pythonhosted.org/packages/8d/f3/c000a1fad772405bffcd3d0e40c38978f741475969a32b1cfd991ac3a45a/nti.schema-1.4.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f6039f25c8ac6c6365dfa4760ef7cf1d", "sha256": "88e926c93db8401b19911e46ac5ac67c8f1718114188ecee07b1bf01b971d323" }, "downloads": -1, "filename": "nti.schema-1.4.2.tar.gz", "has_sig": false, "md5_digest": "f6039f25c8ac6c6365dfa4760ef7cf1d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42277, "upload_time": "2018-09-10T20:52:31", "url": "https://files.pythonhosted.org/packages/fe/a5/c9722b51c931b46b2f8fd179298559f572e9e2018d125e667b3f84656a45/nti.schema-1.4.2.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "58e59eb11717124b10de8d7958fa5cf8", "sha256": "ecc31b5e61bc67d472320e7783fbf6301a15223a3901495542902b35518768dc" }, "downloads": -1, "filename": "nti.schema-1.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "58e59eb11717124b10de8d7958fa5cf8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 41368, "upload_time": "2018-09-11T13:39:24", "url": "https://files.pythonhosted.org/packages/bf/cb/44f8d69642930a7c9526870aee9168ce41a0df42dffffe3bd208377f2e64/nti.schema-1.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "131a629ea93ff5a5c32ac12247083b05", "sha256": "6f0836c72c739023d135079238e5827f9f14164f79856bf89265f798f1cd65e1" }, "downloads": -1, "filename": "nti.schema-1.5.0.tar.gz", "has_sig": false, "md5_digest": "131a629ea93ff5a5c32ac12247083b05", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42622, "upload_time": "2018-09-11T13:39:26", "url": "https://files.pythonhosted.org/packages/c7/f3/23b4fadbb61ecbeafaf58938e168e82b535946c01b09630ddc99c957fd28/nti.schema-1.5.0.tar.gz" } ], "1.6.0": [ { "comment_text": "", "digests": { "md5": "753d7abaaa9fc9d8cb913f7fe5e9760e", "sha256": "d22e188da97cbbf65756f842b39cd9c08c42cf8e4ddc0885f34ce7b3e0a03a57" }, "downloads": -1, "filename": "nti.schema-1.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "753d7abaaa9fc9d8cb913f7fe5e9760e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 41718, "upload_time": "2018-09-18T14:00:20", "url": "https://files.pythonhosted.org/packages/6d/32/ddf13cac33bc434ea9a0b57c041f499679c792256ce2c36304f37b0d089f/nti.schema-1.6.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "43509fb5dd771a3f69c990ab16bbea41", "sha256": "d2219159dda3bd03c8a7a8ef09a962b95f0623f8383381b7fa43b6bd6300fbae" }, "downloads": -1, "filename": "nti.schema-1.6.0.tar.gz", "has_sig": false, "md5_digest": "43509fb5dd771a3f69c990ab16bbea41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43235, "upload_time": "2018-09-18T14:00:22", "url": "https://files.pythonhosted.org/packages/5d/1d/3b13ce827d73c93c8d3722a51bf9962526d90a28747d0fdee0bf3f4f8006/nti.schema-1.6.0.tar.gz" } ], "1.7.0": [ { "comment_text": "", "digests": { "md5": "28c46288100d063f05673bdfbe17eb31", "sha256": "73f3fec3779d542e6fc43ee2db3565d7f6053cb3ca21cc8b9c501c8055a02400" }, "downloads": -1, "filename": "nti.schema-1.7.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "28c46288100d063f05673bdfbe17eb31", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 43131, "upload_time": "2018-09-19T18:38:41", "url": "https://files.pythonhosted.org/packages/74/75/6cb86b9725e6c3723469ea4cd74a1680bd28b68e71ac40b0f1697b1c5259/nti.schema-1.7.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5e73cb62e39e2fb85f8216f1e38c2fba", "sha256": "9a8f849b9b3495ed0c0a93b888e7ad9b2915906b3d52a91b18eced746e770be4" }, "downloads": -1, "filename": "nti.schema-1.7.0.tar.gz", "has_sig": false, "md5_digest": "5e73cb62e39e2fb85f8216f1e38c2fba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45470, "upload_time": "2018-09-19T18:38:43", "url": "https://files.pythonhosted.org/packages/77/49/b4e71e2c57c773cbf0833d38011e62b6f5691bf32858cab15b21cef190f7/nti.schema-1.7.0.tar.gz" } ], "1.8.0": [ { "comment_text": "", "digests": { "md5": "bd01182eb2537fd39342e00dd088484e", "sha256": "f89f2b8d4e0a12f35c447511407f89cce92ed7a05bfbc02cca2e157c0b918207" }, "downloads": -1, "filename": "nti.schema-1.8.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bd01182eb2537fd39342e00dd088484e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 43355, "upload_time": "2018-09-28T20:26:46", "url": "https://files.pythonhosted.org/packages/39/cd/0ee3e9ff9ad9a1cbb408cf33c085c70276eeb1dcbf218e3c232f2e9f25a4/nti.schema-1.8.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cfa3411485b71556e549732ad1fd2db0", "sha256": "23472609fb8801cb16524e568d4af1a86f57215b9717be85ea892318017ee908" }, "downloads": -1, "filename": "nti.schema-1.8.0.tar.gz", "has_sig": false, "md5_digest": "cfa3411485b71556e549732ad1fd2db0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45753, "upload_time": "2018-09-28T20:26:47", "url": "https://files.pythonhosted.org/packages/16/7c/d9aefd2357b246b8e92e6674621d2c17c869ae2ac03287c3e4b2b1baa7e5/nti.schema-1.8.0.tar.gz" } ], "1.9.0": [ { "comment_text": "", "digests": { "md5": "4d12c66bf249db7e374feaa1bba456fd", "sha256": "b3110c84e5a3d1fb7c5d378b503686a97b4021026398fcc924650cff5a0a15cc" }, "downloads": -1, "filename": "nti.schema-1.9.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4d12c66bf249db7e374feaa1bba456fd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 44185, "upload_time": "2018-10-02T18:56:10", "url": "https://files.pythonhosted.org/packages/33/e9/f0cbcd36ae28e869dee21df9a9078c63a9ca35c29f8bb65c5c7f6739d944/nti.schema-1.9.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9a2df8c1e964fe5481c080ba002d8e3e", "sha256": "9be5dcfec9b748ad338c59b940f7af00dfd18d72a67c8930747be7d031795544" }, "downloads": -1, "filename": "nti.schema-1.9.0.tar.gz", "has_sig": false, "md5_digest": "9a2df8c1e964fe5481c080ba002d8e3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46993, "upload_time": "2018-10-02T18:56:11", "url": "https://files.pythonhosted.org/packages/18/1a/dd5e20da1fa71e07a46e482c9c2d04c9810bc436b4e0f937bb1ffb34f696/nti.schema-1.9.0.tar.gz" } ], "1.9.1": [ { "comment_text": "", "digests": { "md5": "543b10a8dfc12678417de2cd5a3a0eb6", "sha256": "3326aeb4a53699be3d535836b1d46931cb44d23770af2873609be6490c917177" }, "downloads": -1, "filename": "nti.schema-1.9.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "543b10a8dfc12678417de2cd5a3a0eb6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 46005, "upload_time": "2018-10-03T17:48:00", "url": "https://files.pythonhosted.org/packages/dc/3c/bf85745b873da700917232f49cf675785ddf3c6047c61b7c29be67faf606/nti.schema-1.9.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4821798a5db694f6019b075c74dc2542", "sha256": "54d2bb384fa9d6f6355ffda52b3901e29a323f5242058623b7fcfe352d062aa1" }, "downloads": -1, "filename": "nti.schema-1.9.1.tar.gz", "has_sig": false, "md5_digest": "4821798a5db694f6019b075c74dc2542", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49337, "upload_time": "2018-10-03T17:48:01", "url": "https://files.pythonhosted.org/packages/6f/e1/eb6a5a45d4d42f3c00358f76e5c8d82a0a4a5be8bc27096c6ab6dbdae1b6/nti.schema-1.9.1.tar.gz" } ], "1.9.2": [ { "comment_text": "", "digests": { "md5": "c0dca0af3c42c2c5ef58dbd3c189a2a7", "sha256": "3da04fb0799fd2d2c2442c7993795c92867590f7263f82d204fc65148fb3c660" }, "downloads": -1, "filename": "nti.schema-1.9.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c0dca0af3c42c2c5ef58dbd3c189a2a7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 46233, "upload_time": "2018-10-04T19:27:51", "url": "https://files.pythonhosted.org/packages/c2/76/fef8e3a2a3f6b827c6eef0704406b809762dd70812c36b39910f0119ea80/nti.schema-1.9.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "16b74575d7eb395bd3c2bd35437ae80d", "sha256": "58894fbef23c39b0decb699a65eb89ad184978f3469229ecd7548dddf52e2953" }, "downloads": -1, "filename": "nti.schema-1.9.2.tar.gz", "has_sig": false, "md5_digest": "16b74575d7eb395bd3c2bd35437ae80d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49929, "upload_time": "2018-10-04T19:27:53", "url": "https://files.pythonhosted.org/packages/e9/d7/64d0b790981f14bf59abbc926cb416adf6aaa3af947d31294c2ab6172f72/nti.schema-1.9.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b9b27e71d9a94554adfdbbac859f7409", "sha256": "062fe5246a35dc52c9b5bd0a124adfc7a2549fd0b283bd1d06d4a2127c6db3fb" }, "downloads": -1, "filename": "nti.schema-1.13.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b9b27e71d9a94554adfdbbac859f7409", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 50827, "upload_time": "2019-06-11T16:34:34", "url": "https://files.pythonhosted.org/packages/3c/a5/97f3d46826dc195eae9391a3887567588c659054ab8ec2592805e441041b/nti.schema-1.13.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bab4e2b56a6db494f5014fe0ccae24d2", "sha256": "d38c2f2b0ef8dcb8e7dc7928a24ddf9371fb121653658b36422d0a2f015633fd" }, "downloads": -1, "filename": "nti.schema-1.13.1.tar.gz", "has_sig": false, "md5_digest": "bab4e2b56a6db494f5014fe0ccae24d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52108, "upload_time": "2019-06-11T16:34:36", "url": "https://files.pythonhosted.org/packages/93/ba/bf83444ef1237a49897e631739dbe988f9ab1ff706f521ec55f3fbaff4a3/nti.schema-1.13.1.tar.gz" } ] }