{ "info": { "author": "Pacharapol Withyasakpunt", "author_email": "patarapolw@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# tinydb-constraint\n\n[![PyPI version shields.io](https://img.shields.io/pypi/v/tinydb-constraint.svg)](https://pypi.python.org/pypi/tinydb-constraint/)\n[![PyPI license](https://img.shields.io/pypi/l/tinydb-constraint.svg)](https://pypi.python.org/pypi/tinydb-constraint/)\n\nApply constraints before inserting and updating TinyDB records.\n\n## Installation\n\nMethod 1:\n\n```commandline\n$ pip install tinydb-constraint\n```\n\nMethod 2:\n\n- Clone the project from GitHub\n- [Get poetry](https://github.com/sdispater/poetry) and `poetry install tinydb-constraint --path PATH/TO/TINYDB/CONSTRAINT`\n\n## Usage\n\n```python\n>>> from tinydb import TinyDB\n>>> from tinydb_constraint import ConstraintTable\n>>> from datetime import datetime\n>>> TinyDB.table_class = ConstraintTable\n>>> db = TinyDB('db.json')\n>>> db.set_schema({\n... 'record_id': int,\n... 'modified': datetime\n... })\n>>> db.schema\n{\n 'record_id': Constraint(type_=int, unique=False, not_null=False),\n 'modified': Constraint(type_=datetime.datetime, unique=False, not_null=False)\n}\n```\n\n## Note\n\nI haven't modified the serialization yet, so `datetime` type will actually produce `datetime.isoformat()`, and to set `datetime`, you have to pass a `dateutil.parser.parse()`-parsable string.\n\n## Advanced usage\n\nDatabase schema is also settable via `Constraint` object.\n\n```python\n>>> from tinydb_constraint import Constraint\n>>> db.set_schema({\n... 'user_id': Constraint(type_=int, unique=True, not_null=True)\n... })\n```\n\nIf you want to disable certain string sanitization features, like stripping spaces or checking if string can be converted to datetime, this can be done by setting environmental variables.\n\n```\nTINYDB_SANITIZE=0\nTINYDB_DATETIME=0\n```\n\n## Plan\n\n- Add ForeignKey constraints.\n\n## Related projects\n\n- [tinydb-viewer](https://github.com/patarapolw/tinydb-viewer) - View records generated from TinyDB and alike (e.g. list of dictionaries.)\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/patarapolw/tinydb-constraint", "keywords": "TinyDB", "license": "MIT", "maintainer": "Pacharapol Withyasakpunt", "maintainer_email": "patarapolw@gmail.com", "name": "tinydb-constraint", "package_url": "https://pypi.org/project/tinydb-constraint/", "platform": "", "project_url": "https://pypi.org/project/tinydb-constraint/", "project_urls": { "Homepage": "https://github.com/patarapolw/tinydb-constraint" }, "release_url": "https://pypi.org/project/tinydb-constraint/0.1.8.1/", "requires_dist": [ "tinydb (>=3.11,<4.0)", "python-dateutil (>=2.7,<3.0)" ], "requires_python": "", "summary": "Apply constraints before inserting and updating TinyDB records.", "version": "0.1.8.1" }, "last_serial": 4331369, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "6e27af445a4ce0c645813aeb2f11f540", "sha256": "7dacae4bebd6c9046198b7eb8ad61573271f76e24d196208f77f9ea2715f4833" }, "downloads": -1, "filename": "tinydb_constraint-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6e27af445a4ce0c645813aeb2f11f540", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7621, "upload_time": "2018-10-01T03:05:46", "url": "https://files.pythonhosted.org/packages/f1/53/85b069efcf753859b2852e66da7a6da1c977d8062f65ce15fdaff0910bdb/tinydb_constraint-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c62a39c0989f9190ef6ffac73e9f73c0", "sha256": "13ff02dd86ea9138af864a90f0b71ed6d05fd06f76ece237ed0a90c47655bc6a" }, "downloads": -1, "filename": "tinydb-constraint-0.1.0.tar.gz", "has_sig": false, "md5_digest": "c62a39c0989f9190ef6ffac73e9f73c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3761, "upload_time": "2018-10-01T03:05:44", "url": "https://files.pythonhosted.org/packages/68/d2/ba43d37630c88c6f05b63fde74bd280699ad2b54b4e31adde4aede7422aa/tinydb-constraint-0.1.0.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "8084b28d32f70a9e4af4c0411daab082", "sha256": "b57c524c52eb525bedbfe98de22a6aad09db69bfb0f31cbe8d963bcdf3afe6ba" }, "downloads": -1, "filename": "tinydb_constraint-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8084b28d32f70a9e4af4c0411daab082", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13684, "upload_time": "2018-10-01T11:19:10", "url": "https://files.pythonhosted.org/packages/60/56/05911d7cddce29848239f37929a4e41aac1af07dc2ae6457d49f00f39116/tinydb_constraint-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "567c6d2931bc716aebb7e23f32276ff7", "sha256": "d287feb2cf51ae3af3b767fb635e15763d8f4163385fd3e44882ddacdb755992" }, "downloads": -1, "filename": "tinydb-constraint-0.1.2.tar.gz", "has_sig": false, "md5_digest": "567c6d2931bc716aebb7e23f32276ff7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5272, "upload_time": "2018-10-01T11:19:08", "url": "https://files.pythonhosted.org/packages/7c/54/6a7b12436f760497f1ac9bdfdc91c311b5dd3f8b35efae01a4c7fe2c4906/tinydb-constraint-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "30c2bdade7a04bed902034bca056f1ca", "sha256": "c237ce6daf674f7db6350448895efb41c9a335a07f73a336d5745d2d58faba04" }, "downloads": -1, "filename": "tinydb_constraint-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "30c2bdade7a04bed902034bca056f1ca", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14203, "upload_time": "2018-10-01T13:05:41", "url": "https://files.pythonhosted.org/packages/75/49/ccca929d992f532555a6cc2c37d284e3bcb781be9061f6cf3f4f4a4513a3/tinydb_constraint-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "edb301248256c63a7eb8d2a38a6a6030", "sha256": "17b683d9b17fe619d82807c7fb5b0a184216e5d569258548c86e285b98e6719a" }, "downloads": -1, "filename": "tinydb-constraint-0.1.3.tar.gz", "has_sig": false, "md5_digest": "edb301248256c63a7eb8d2a38a6a6030", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5339, "upload_time": "2018-10-01T13:05:40", "url": "https://files.pythonhosted.org/packages/1c/89/d29691e68b9ab10a917f2ba976b9ec6db9593e43ba23b26cf22edc2e0b16/tinydb-constraint-0.1.3.tar.gz" } ], "0.1.3.1": [ { "comment_text": "", "digests": { "md5": "26372221d86d4cd55a1f577d020b903e", "sha256": "c3466a86de1419d715d0abbe5cae669bfdeda395d4e8ad2067ecc5ff11cd049d" }, "downloads": -1, "filename": "tinydb_constraint-0.1.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "26372221d86d4cd55a1f577d020b903e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14224, "upload_time": "2018-10-01T13:18:03", "url": "https://files.pythonhosted.org/packages/df/0a/d9710b4b7dff30f13b2a869079bd099129a241adc0947be64594c3ebdd43/tinydb_constraint-0.1.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "862fa3620a820bc416e91b0bfc732202", "sha256": "7245151103204aeb06a1542bac988996c7c740d5761134cdbe263f13a2ec33de" }, "downloads": -1, "filename": "tinydb-constraint-0.1.3.1.tar.gz", "has_sig": false, "md5_digest": "862fa3620a820bc416e91b0bfc732202", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5348, "upload_time": "2018-10-01T13:18:02", "url": "https://files.pythonhosted.org/packages/6e/e4/9a9a859e48eabd03f286bfe1037e85dedc845eb4ee9bcf8792434c1d5a71/tinydb-constraint-0.1.3.1.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "def79c8eb6191fe68867092c28c5ee1e", "sha256": "1d05270dc3037138e79703491c4d0325f56d1753aa797864200df7e5e28b86a6" }, "downloads": -1, "filename": "tinydb_constraint-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "def79c8eb6191fe68867092c28c5ee1e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14314, "upload_time": "2018-10-01T14:08:31", "url": "https://files.pythonhosted.org/packages/c2/72/b5a61a393a0fd84aadc4f4bd04ebd639d5c9ec21c0d346c0bf064a8e5cc6/tinydb_constraint-0.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eea59b0f64d1c8bf11e2d1fe05be119f", "sha256": "f6951fc6280db39cddf14f79e6d9562d406dc656bd6e1b6bf37ccb0600fb7d80" }, "downloads": -1, "filename": "tinydb-constraint-0.1.4.tar.gz", "has_sig": false, "md5_digest": "eea59b0f64d1c8bf11e2d1fe05be119f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5379, "upload_time": "2018-10-01T14:08:27", "url": "https://files.pythonhosted.org/packages/6d/84/9dfb69db7c3b0ac0582aa503b3dcef96e9602121dbe7192ca195f379049c/tinydb-constraint-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "507e5c3d6e55b92178352c96bb19a9cf", "sha256": "26148f6c61cd7e8b4fa39688bf6a47c5f8d99c1ad040449a8bf8447148c12b9c" }, "downloads": -1, "filename": "tinydb_constraint-0.1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "507e5c3d6e55b92178352c96bb19a9cf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14590, "upload_time": "2018-10-01T14:39:53", "url": "https://files.pythonhosted.org/packages/2e/c3/fc6a5ae42416ba8435094e6377b7e6fab4d5992e69e82b1cce907efd28a7/tinydb_constraint-0.1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "89a3e21041cc30a65aa64d78ed73d693", "sha256": "5404e18e12fa19fa40b38fea13024ff19818cc02b47e9eb79f09c3cf7da1016c" }, "downloads": -1, "filename": "tinydb-constraint-0.1.5.tar.gz", "has_sig": false, "md5_digest": "89a3e21041cc30a65aa64d78ed73d693", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5410, "upload_time": "2018-10-01T14:39:51", "url": "https://files.pythonhosted.org/packages/69/36/de6c3c61fea2d5c12b37403d2530532b4a398e3b4caf1acb2255dcec0399/tinydb-constraint-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "35028fe4095ad1656cccfa400fcfccd7", "sha256": "775a829f75b1b42e24954e5a380406c202f0847335e7c757ce5dc465640e5d8b" }, "downloads": -1, "filename": "tinydb_constraint-0.1.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "35028fe4095ad1656cccfa400fcfccd7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15201, "upload_time": "2018-10-01T16:56:56", "url": "https://files.pythonhosted.org/packages/e3/03/489a39f209f238030022b5bb4af362e02546533b44990954da7daae37cdd/tinydb_constraint-0.1.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5c0d75d192e3e336879abfe0d03046fa", "sha256": "80add29a078ad17b047ef2dbafef8bd8365967fffdfbe703a5799e99b2e794f5" }, "downloads": -1, "filename": "tinydb-constraint-0.1.6.tar.gz", "has_sig": false, "md5_digest": "5c0d75d192e3e336879abfe0d03046fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5523, "upload_time": "2018-10-01T16:56:54", "url": "https://files.pythonhosted.org/packages/cd/dc/30aa2e5dc6641b3acd0cbc52067c4c097785f8598173c66e28256bb75a93/tinydb-constraint-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "89a1ae4cd2f89d823da686d3d27f01af", "sha256": "29266e59ec9d5b2dbcbd1dfe5fb0dfe486c660ae408f3b7b1eab1fe12b79c6c0" }, "downloads": -1, "filename": "tinydb_constraint-0.1.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "89a1ae4cd2f89d823da686d3d27f01af", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15251, "upload_time": "2018-10-01T18:54:08", "url": "https://files.pythonhosted.org/packages/24/c3/78837b388f7f0688259a5d60bab86cd13cb7a5c639bfe6b3c9704fe2b347/tinydb_constraint-0.1.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ae3ebed3c11ce937deddffa323fcc9dc", "sha256": "f71bc0a75e6bd1a264844bf42aef88c7243f01952c7a097c702454d5e30fcb5b" }, "downloads": -1, "filename": "tinydb-constraint-0.1.7.tar.gz", "has_sig": false, "md5_digest": "ae3ebed3c11ce937deddffa323fcc9dc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5541, "upload_time": "2018-10-01T18:54:06", "url": "https://files.pythonhosted.org/packages/37/f3/43cc38136ac07c14ae2163a94b8e01b7b02656b74980a9ba0df6081b9842/tinydb-constraint-0.1.7.tar.gz" } ], "0.1.7.1": [ { "comment_text": "", "digests": { "md5": "b0e3ba344237a7185226369ff6ebbe87", "sha256": "0579cf0e4c4efe8643323cd01828684ee0089de6a77830d3266b32390497a94a" }, "downloads": -1, "filename": "tinydb_constraint-0.1.7.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b0e3ba344237a7185226369ff6ebbe87", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15269, "upload_time": "2018-10-01T18:54:47", "url": "https://files.pythonhosted.org/packages/4b/b1/66d3c01f79948f4194003ffa8e14f21daed320b3b7152f8e37561728fb96/tinydb_constraint-0.1.7.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5afad5d11b3e2ab2fea6dc5a013f634f", "sha256": "fe9e1457a83ed81709f167d1a4d6cdaa29705d6add53bedae8f7be1477e6ff17" }, "downloads": -1, "filename": "tinydb-constraint-0.1.7.1.tar.gz", "has_sig": false, "md5_digest": "5afad5d11b3e2ab2fea6dc5a013f634f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5554, "upload_time": "2018-10-01T18:54:45", "url": "https://files.pythonhosted.org/packages/67/65/5b4b662dc10dee76b4d6ad5077e2a10bb8865cee7db1afaa4a911f2f7fd4/tinydb-constraint-0.1.7.1.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "946d09e55a6ab23ed9f70230dad8b481", "sha256": "181fcefbadcd57f7244f92485c29a379793c8a2ff8edfb2a7affbadc8cc0757d" }, "downloads": -1, "filename": "tinydb_constraint-0.1.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "946d09e55a6ab23ed9f70230dad8b481", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15249, "upload_time": "2018-10-01T19:20:43", "url": "https://files.pythonhosted.org/packages/6a/f4/b1220847c522f2effb092a2e883bf415184e36a2e61640d9896838eede1a/tinydb_constraint-0.1.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0973332f56285849e8c7c819603c4052", "sha256": "d7bfecea95074cf489be726a9c368d5c39be083ce9d711160789c3852d58a477" }, "downloads": -1, "filename": "tinydb-constraint-0.1.8.tar.gz", "has_sig": false, "md5_digest": "0973332f56285849e8c7c819603c4052", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5547, "upload_time": "2018-10-01T19:20:42", "url": "https://files.pythonhosted.org/packages/f0/87/b878e795bd22cc726b745b2cc887f6525c5b78568b91821d7496f82972ba/tinydb-constraint-0.1.8.tar.gz" } ], "0.1.8.1": [ { "comment_text": "", "digests": { "md5": "9335a2020ca216f76176d69ed9185124", "sha256": "8672925ab93f453597ad7db877ff61d311a386ba73b939b966b6b3af1e825119" }, "downloads": -1, "filename": "tinydb_constraint-0.1.8.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9335a2020ca216f76176d69ed9185124", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15218, "upload_time": "2018-10-02T05:00:14", "url": "https://files.pythonhosted.org/packages/e2/69/6990be9abc1ef0f6e703239fc1077bb7247aaaee463873beebb230ec8230/tinydb_constraint-0.1.8.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "35dd8432b9034dd7b1d1d4afd403a96a", "sha256": "eb12ba9c7cf9bc6852e0efce1dc1a9c2aeee07f50c61ac40cb00f88077d94caf" }, "downloads": -1, "filename": "tinydb-constraint-0.1.8.1.tar.gz", "has_sig": false, "md5_digest": "35dd8432b9034dd7b1d1d4afd403a96a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5544, "upload_time": "2018-10-02T05:00:13", "url": "https://files.pythonhosted.org/packages/55/c5/31039dae1c1def437a1b0422e837b6fd99e42aef241074a0e1bd51ab9e32/tinydb-constraint-0.1.8.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9335a2020ca216f76176d69ed9185124", "sha256": "8672925ab93f453597ad7db877ff61d311a386ba73b939b966b6b3af1e825119" }, "downloads": -1, "filename": "tinydb_constraint-0.1.8.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9335a2020ca216f76176d69ed9185124", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15218, "upload_time": "2018-10-02T05:00:14", "url": "https://files.pythonhosted.org/packages/e2/69/6990be9abc1ef0f6e703239fc1077bb7247aaaee463873beebb230ec8230/tinydb_constraint-0.1.8.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "35dd8432b9034dd7b1d1d4afd403a96a", "sha256": "eb12ba9c7cf9bc6852e0efce1dc1a9c2aeee07f50c61ac40cb00f88077d94caf" }, "downloads": -1, "filename": "tinydb-constraint-0.1.8.1.tar.gz", "has_sig": false, "md5_digest": "35dd8432b9034dd7b1d1d4afd403a96a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5544, "upload_time": "2018-10-02T05:00:13", "url": "https://files.pythonhosted.org/packages/55/c5/31039dae1c1def437a1b0422e837b6fd99e42aef241074a0e1bd51ab9e32/tinydb-constraint-0.1.8.1.tar.gz" } ] }