{ "info": { "author": "Xin Huang", "author_email": "xinhuang.abc@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "****************\nNoSQL Versioning\n****************\n\nA Python library for NoSQL record versioning.\n\nInstallation\n============\n\nTo install the latest release on `PyPi `_,\nsimply run:\n\n::\n\n pip install nosql_versioning\n\nOr to install the latest development version, run:\n\n::\n\n git clone https://github.com/xinhuang/nosql_versioning.git\n cd nosql_versioning\n python setup.py install\n\nQuick Tutorial\n==============\n\n.. code:: pycon\n\n >>> from nosql_versioning import schema\n >>> import json\n >>>\n >>> version, Record = schema(decode=json.loads)\n >>>\n >>> @version()\n >>> class Recordv0(object):\n >>> def __init__(self, data):\n >>> self.old_name = data['old_name']\n >>>\n >>> @version(1)\n >>> class Recordv1(object):\n >>> def __init__(self, value=None, *args, data=None):\n >>> if data:\n >>> self.new_name = data['new_name']\n >>> else:\n >>> self.new_name = value\n >>>\n >>> @staticmethod\n >>> def migrate(data):\n >>> data['new_name'] = data['old_name']\n >>> del data['old_name']\n >>> \n >>> @staticmethod\n >>> def a_staticmethod(n):\n >>> print(n * 2)\n >>>\n >>> rec = Record('{\"_ver\": 0, \"old_name\": 1}')\n >>> print(rec.new_name)\n 1\n >>> rec = Record(value=42) # custom constructor can also be used\n >>> print(rec.new_name)\n 42\n >>> Record.a_staticmethod(42) # static methods defined in the latest version can be used\n 84\n\n\nAPI Reference\n=============\n\n``schema(decode=decode, version=get_version)``\n Create a class descriptor to specify record classes of different version, and a Record initializer to instantiate the latest record from data, or to migrate data to the latest version.\n\n :Args:\n * ``decode``: Deserialize objects retrieved from database. By default no decoding will be applied.\n * ``version``: Get version from record. By default it's ``data.get('_ver')``\n\n :Returns:\n * ``version``: A class descriptor to specify record version.\n * ``Record``: A initializer that to construct defined Record class. Migrate if data is not the latest version.\n\n``version(n=0)``\n A class descriptor to specify record class of version N.\n\n :Args:\n * ``n``: Version. Must be a integer.\n\n :Raises:\n * ``VersionConflictionException``: When a version is defined twice.\n\n``Record(data=None, *args, **kwargs)``\n The initializer to migrate record to latest and instantiate record class.\n\n :Args:\n * ``data``: If only this argument is specified, ``decode(data)`` will be used to instantiate the latest record class. (Migrate if needed.)\n * ``args``, ``kwargs``: If not only ``data`` is specified, all arguments will be passed to instantiate the latest record class. No migration.\n\nMigration from Version N-1 to N will use static method ``migrate`` in record class version N.\n\nIn case there is no version specified, migration from None to 0 will use static method ``migrate`` in record class Version 0.\n\nLicensing\n=========\n\nThis project is released under the terms of the MIT Open Source License. View\n*LICENSE.txt* for more information.\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/xinhuang/nosql_versioning", "keywords": "", "license": "License :: OSI Approved :: MIT License", "maintainer": "", "maintainer_email": "", "name": "nosql-versioning", "package_url": "https://pypi.org/project/nosql-versioning/", "platform": "", "project_url": "https://pypi.org/project/nosql-versioning/", "project_urls": { "Homepage": "https://github.com/xinhuang/nosql_versioning" }, "release_url": "https://pypi.org/project/nosql-versioning/0.1.8.3/", "requires_dist": null, "requires_python": "", "summary": "Python Library for NoSQL database record versioning", "version": "0.1.8.3" }, "last_serial": 3343867, "releases": { "0.1": [], "0.1.1": [ { "comment_text": "", "digests": { "md5": "d19e387703886c68e62d91d7457883ba", "sha256": "1bbee54c8e236aa286ebb2801069329b0123f05b9753facee5c93efd926cbca8" }, "downloads": -1, "filename": "nosql_versioning-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d19e387703886c68e62d91d7457883ba", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 4569, "upload_time": "2017-09-10T07:47:26", "url": "https://files.pythonhosted.org/packages/6a/54/be4d08ad56891fe6a298d0a8638cdd6144c00ae46b15eb514f561ffc360a/nosql_versioning-0.1.1-py3-none-any.whl" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "844687d583157ef208db9861457788eb", "sha256": "003a61627750edbb859e0e665f645abd3012a4dac69b4d2d10984db7df5def25" }, "downloads": -1, "filename": "nosql_versioning-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "844687d583157ef208db9861457788eb", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 4569, "upload_time": "2017-09-10T07:54:20", "url": "https://files.pythonhosted.org/packages/6c/37/bd0e0fda28133e9e46c1b4e2d00cdcf1f7e958fc546e4096ab83c0bc90ea/nosql_versioning-0.1.2-py3-none-any.whl" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "82c8d0dcbdf25d8d52a3bf7eceada0cf", "sha256": "14a17782ea410e78fbfe803dd5cb6f5aad82b4a283d03acc9a6bf77d4aa969e5" }, "downloads": -1, "filename": "nosql_versioning-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "82c8d0dcbdf25d8d52a3bf7eceada0cf", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 6001, "upload_time": "2017-09-10T08:22:19", "url": "https://files.pythonhosted.org/packages/0e/49/f89f9fab005b2620a45043f18553d4b7efaace559084d7d150864fcd6f4f/nosql_versioning-0.1.3-py3-none-any.whl" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "cfb92ab2158e9312f27c9e41662102c9", "sha256": "3697c7a97e416f4999ed98c0ad43e7a971e5237bd73f8c4e09cdb2dd45e2f121" }, "downloads": -1, "filename": "nosql_versioning-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "cfb92ab2158e9312f27c9e41662102c9", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 6020, "upload_time": "2017-09-10T18:49:55", "url": "https://files.pythonhosted.org/packages/a1/27/a2951a8f484b78ea8e3964683605f17e08c9dbc41627dedace0f50fe7aa6/nosql_versioning-0.1.4-py3-none-any.whl" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "47b54c2e2406268a1ae026604d08f20f", "sha256": "35c50a8f1e683de0ef544e45ac19dbd475c3e96b40c421c34ebb21bb0c4d4a63" }, "downloads": -1, "filename": "nosql_versioning-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "47b54c2e2406268a1ae026604d08f20f", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 6183, "upload_time": "2017-09-11T07:02:15", "url": "https://files.pythonhosted.org/packages/31/e3/aafe9bd441bbaf0230a3031fb526b3c7c71015f18e894a3b848eecdf0abf/nosql_versioning-0.1.5-py3-none-any.whl" } ], "0.1.5.1": [ { "comment_text": "", "digests": { "md5": "c186e98030e3bc08ca757a2790aeeaf4", "sha256": "4d1943f2d4248ccfeb1ba991d29afd02b58cc306bfd304941e0d7737007e7ca9" }, "downloads": -1, "filename": "nosql_versioning-0.1.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c186e98030e3bc08ca757a2790aeeaf4", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 6181, "upload_time": "2017-09-11T07:26:38", "url": "https://files.pythonhosted.org/packages/56/23/b55b908dee1219c320da28c33e91f6050fa4d9d84928305aeadbee95f87f/nosql_versioning-0.1.5.1-py3-none-any.whl" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "c40af310a541fa8b0b7f66f6bbee26ac", "sha256": "60de8dc484dad0de438e95e1369eda2318999ad41fe2a285b3653a512016ec27" }, "downloads": -1, "filename": "nosql_versioning-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "c40af310a541fa8b0b7f66f6bbee26ac", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 6464, "upload_time": "2017-09-11T21:31:13", "url": "https://files.pythonhosted.org/packages/13/a5/8b4930f10aab69ac28adc12edae0bfab0595cb33a55b4b429d0d53a3732b/nosql_versioning-0.1.6-py3-none-any.whl" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "37475573dbae893f8611a03204e36012", "sha256": "41781683e113a99c55c7db87ea89864d3a8e5cc88fad0fedea0bc044e893c326" }, "downloads": -1, "filename": "nosql_versioning-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "37475573dbae893f8611a03204e36012", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 6524, "upload_time": "2017-09-11T21:42:47", "url": "https://files.pythonhosted.org/packages/1e/e4/32bb59b088db91ae8b88eca2abdc85fc0495d36a3718422b6e37d2ca5a74/nosql_versioning-0.1.7-py3-none-any.whl" } ], "0.1.7.1": [ { "comment_text": "", "digests": { "md5": "c3bd5770786b99ebadaa627a3b7395d0", "sha256": "1751bb92c0fc604823e6cc629cd10da0deb3d870f3c7ae306ea5e5f5004b560b" }, "downloads": -1, "filename": "nosql_versioning-0.1.7.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c3bd5770786b99ebadaa627a3b7395d0", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 7526, "upload_time": "2017-09-11T22:19:46", "url": "https://files.pythonhosted.org/packages/09/ca/ed75cdcd4db48ff384b2c33332d112beed8b488bf9ad7d2c826354299935/nosql_versioning-0.1.7.1-py3-none-any.whl" } ], "0.1.8.0": [ { "comment_text": "", "digests": { "md5": "4d137f62365e3eed39fc7925e42b0189", "sha256": "08c84b6144282528880ce3d83ca24ed7f8fb076a5950f7998957e9993ce935fe" }, "downloads": -1, "filename": "nosql_versioning-0.1.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4d137f62365e3eed39fc7925e42b0189", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 7902, "upload_time": "2017-11-18T07:03:26", "url": "https://files.pythonhosted.org/packages/72/f8/adfbdceff11c86a5e505f375ae8ae4100c630700c2ea544ccda5b7620d28/nosql_versioning-0.1.8.0-py3-none-any.whl" } ], "0.1.8.1": [ { "comment_text": "", "digests": { "md5": "e48b8b3dff78a919596df12c985c3aa0", "sha256": "17d8f873bf6142f830f633debf26dd70a3907db82599360998a00f80141084a0" }, "downloads": -1, "filename": "nosql_versioning-0.1.8.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e48b8b3dff78a919596df12c985c3aa0", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 7962, "upload_time": "2017-11-18T07:22:48", "url": "https://files.pythonhosted.org/packages/71/2d/77a063c7dc866dfb5fe205c09da02fe28f79c6f06462f02cf8d94e7bf10d/nosql_versioning-0.1.8.1-py3-none-any.whl" } ], "0.1.8.2": [ { "comment_text": "", "digests": { "md5": "59358ad616153c63a0ff52da5d5489a2", "sha256": "e9102677e852aced1da4290c6d0287736f42b938d8143ca9152ca67d5a88cb74" }, "downloads": -1, "filename": "nosql_versioning-0.1.8.2-py3-none-any.whl", "has_sig": false, "md5_digest": "59358ad616153c63a0ff52da5d5489a2", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 7966, "upload_time": "2017-11-18T07:46:15", "url": "https://files.pythonhosted.org/packages/df/18/1f39364e598321ef11d67b831db1d26ac8df910349b4fe294acf332fde66/nosql_versioning-0.1.8.2-py3-none-any.whl" } ], "0.1.8.3": [ { "comment_text": "", "digests": { "md5": "63aae2a0f8ad8070fc004e3f0edf2908", "sha256": "60e41e3369728da61c9da4eff68f68e5f7a8fa750377477da28c2d6dc2c0224e" }, "downloads": -1, "filename": "nosql_versioning-0.1.8.3-py3-none-any.whl", "has_sig": false, "md5_digest": "63aae2a0f8ad8070fc004e3f0edf2908", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 7979, "upload_time": "2017-11-18T10:21:28", "url": "https://files.pythonhosted.org/packages/d1/3d/81735b70d51528a42cd901e50e5adbd849c08ef0153d2c72266e2223718a/nosql_versioning-0.1.8.3-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "63aae2a0f8ad8070fc004e3f0edf2908", "sha256": "60e41e3369728da61c9da4eff68f68e5f7a8fa750377477da28c2d6dc2c0224e" }, "downloads": -1, "filename": "nosql_versioning-0.1.8.3-py3-none-any.whl", "has_sig": false, "md5_digest": "63aae2a0f8ad8070fc004e3f0edf2908", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 7979, "upload_time": "2017-11-18T10:21:28", "url": "https://files.pythonhosted.org/packages/d1/3d/81735b70d51528a42cd901e50e5adbd849c08ef0153d2c72266e2223718a/nosql_versioning-0.1.8.3-py3-none-any.whl" } ] }