{ "info": { "author": "james sangho nah", "author_email": "sangho.nah@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "istruct\n=======\nImmutable struct built on top of ``collections.namedtuple`` with sane defaults\n\nGoals\n-----\n- Immutable, dictionary-like data structure (Note: ``istruct`` is *not* an immutable version of the existing ``struct`` in Python)\n- Minimal\n- Support required *and* optional fields (with default values)\n- Strictly disallow positional arguments\n\nInstallation\n------------\n\n``pip install istruct``\n\nQuick Start\n-----------\nFirst, create an ``istruct`` object called ``person`` where ``first_name`` and ``last_name`` are *required* whereas ``middle_name``, ``dob`` and ``email`` are *optional* (with default values specified).\n\n.. code-block::\n\n >>> from istruct import istruct\n >>> person = istruct(\"first_name\", \"last_name\", middle_name=\"\", dob=\"2000-01-01\", email=None)\n\nThen, create an instance of ``person`` with ``first_name``, ``last_name`` and ``middle_name``.\n\n.. code-block::\n\n >>> p = person(first_name=\"Jim\", last_name=\"Raynor\", middle_name=\"Eugene\")\n >>> p\n istruct(first_name='Jim', last_name='Raynor', email=None, dob='2000-01-01', middle_name='Eugene')\n\nYou can retrieve field values like you would normally do.\n\n.. code-block::\n\n >>> p.first_name\n 'Jim'\n >>> p.dob\n '2000-01-01'\n\n``p`` is immutable, meaning that it cannot be modified after created. Thus, set/delete operations like below would fail, raising an ``AttributeError``.\n\n.. code-block::\n\n >>> p.first_name = \"James\"\n Traceback (most recent call last):\n File \"\", line 1, in \n AttributeError: can't set attribute\n >>> del p.email\n Traceback (most recent call last):\n File \"\", line 1, in \n AttributeError: can't delete attribute\n\n``istruct`` only accepts named/keyword arguments. It strictly disallows positional arguments by design.\n\n.. code-block::\n\n >>> p = person(\"Jim\", \"Raynor\")\n Traceback (most recent call last):\n File \"\", line 1, in \n File \"/Users/microamp/src/microamp/istruct/istruct/__init__.py\", line 52, in _istruct\n \"(%d found)\" % (len(positional),))\n TypeError: No positional arguments are allowed in istruct (2 found)\n\n``istruct`` would raise a ``TypeError`` when one or more *required* fields are omitted.\n\n.. code-block::\n\n >>> p = person(last_name=\"Raynor\")\n Traceback (most recent call last):\n File \"\", line 1, in \n File \"/Users/microamp/src/microamp/istruct/istruct/__init__.py\", line 56, in _istruct\n return nt(**merge_dicts(kwargs, attrs))\n TypeError: __new__() missing 1 required positional argument: 'first_name'\n\nVersions Tested\n---------------\n- Python 2.7\n- Python 3.2\n- Python 3.3\n- Python 3.4\n- Python 3.5\n- Python 3.6\n- PyPy\n- PyPy3\n\nTODO\n----\n- Find ways to annotate types\n\nLicense\n-------\nMIT\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/microamp/istruct", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "istruct", "package_url": "https://pypi.org/project/istruct/", "platform": "", "project_url": "https://pypi.org/project/istruct/", "project_urls": { "Homepage": "https://github.com/microamp/istruct" }, "release_url": "https://pypi.org/project/istruct/0.1.6/", "requires_dist": null, "requires_python": "", "summary": "Immutable struct with sane defaults", "version": "0.1.6" }, "last_serial": 2821574, "releases": { "0.1": [], "0.1.1": [], "0.1.2": [], "0.1.3": [], "0.1.5": [ { "comment_text": "", "digests": { "md5": "4c0de3fc111091b009f8ef5cef6c28af", "sha256": "2961071231fcfd80c4139464471b1df9768118aa0b69b8fc6d8afa7656ef82de" }, "downloads": -1, "filename": "istruct-0.1.5.tar.gz", "has_sig": false, "md5_digest": "4c0de3fc111091b009f8ef5cef6c28af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3373, "upload_time": "2015-02-09T11:59:51", "url": "https://files.pythonhosted.org/packages/21/df/251705af399c48754c38691630f7b2e51d6a9bec279af84b6b52cd15b58b/istruct-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "d9915847a386b4868d9c85b0068f4586", "sha256": "d20576560a3cf26f5a29035f74ed8b4621ad692fdb08ef3a1c07e48112af6782" }, "downloads": -1, "filename": "istruct-0.1.6.tar.gz", "has_sig": false, "md5_digest": "d9915847a386b4868d9c85b0068f4586", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2816, "upload_time": "2017-04-22T11:43:45", "url": "https://files.pythonhosted.org/packages/37/a6/71bd4d1b14a5b6827e12ce66bc8397d4a75d60c5ecfd708af2be1be1df97/istruct-0.1.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d9915847a386b4868d9c85b0068f4586", "sha256": "d20576560a3cf26f5a29035f74ed8b4621ad692fdb08ef3a1c07e48112af6782" }, "downloads": -1, "filename": "istruct-0.1.6.tar.gz", "has_sig": false, "md5_digest": "d9915847a386b4868d9c85b0068f4586", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2816, "upload_time": "2017-04-22T11:43:45", "url": "https://files.pythonhosted.org/packages/37/a6/71bd4d1b14a5b6827e12ce66bc8397d4a75d60c5ecfd708af2be1be1df97/istruct-0.1.6.tar.gz" } ] }