{ "info": { "author": "Hynek Schlawack", "author_email": "hs@ox.cx", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "characteristic: Python attributes without boilerplate.\n======================================================\n\n.. image:: https://pypip.in/version/characteristic/badge.svg\n :target: https://pypi.python.org/pypi/characteristic/\n :alt: Latest Version\n\n.. image:: https://travis-ci.org/hynek/characteristic.svg\n :target: https://travis-ci.org/hynek/characteristic\n :alt: CI status\n\n.. image:: https://coveralls.io/repos/hynek/characteristic/badge.png?branch=master\n :target: https://coveralls.io/r/hynek/characteristic?branch=master\n :alt: Current coverage\n\n.. begin\n\n\n``characteristic`` is an `MIT `_-licensed Python package with class decorators that ease the chores of implementing the most common attribute-related object protocols.\n\nYou just specify the attributes to work with and ``characteristic`` gives you any or all of:\n\n- a nice human-readable ``__repr__``,\n- a complete set of comparison methods,\n- immutability for attributes,\n- and a kwargs-based initializer (that cooperates with your existing one and optionally even checks the types of the arguments)\n\n*without* writing dull boilerplate code again and again.\n\nThis gives you the power to use actual classes with actual types in your code instead of confusing ``tuple``\\ s or confusingly behaving ``namedtuple``\\ s.\n\nSo put down that type-less data structures and welcome some class into your life!\n\n``characteristic``\\ \u2019s documentation lives at `Read the Docs `_, the code on `GitHub `_.\nIt\u2019s rigorously tested on Python 2.6, 2.7, 3.3+, and PyPy.\n\n\nAuthors\n-------\n\n``characteristic`` is written and maintained by `Hynek Schlawack `_.\n\nThe development is kindly supported by `Variomedia AG `_.\n\nIt\u2019s inspired by Twisted\u2019s `FancyEqMixin `_ but is implemented using class decorators because `sub-classing is bad for you `_, m\u2019kay?\n\n\nThe following folks helped forming ``characteristic`` into what it is now:\n\n- `Adam Dangoor `_\n- `Glyph `_\n- `Itamar Turner-Trauring `_\n- `Jean-Paul Calderone `_\n- `Julian Berman `_\n- `Richard Wall `_\n- `Tom Prince `_", "description_content_type": null, "docs_url": null, "download_url": null, "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://characteristic.readthedocs.org/", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "characteristic", "package_url": "https://pypi.org/project/characteristic/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/characteristic/", "project_urls": { "Homepage": "https://characteristic.readthedocs.org/" }, "release_url": "https://pypi.org/project/characteristic/14.3.0/", "requires_dist": null, "requires_python": null, "summary": "Python attributes without boilerplate.", "version": "14.3.0" }, "last_serial": 1354336, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "fad6f0f065e2f7dcd8b5d75ce88b175f", "sha256": "e2696404a745092e925a0067bb1223d4ee5a62a7ed917e120481f5dfbee9fbf2" }, "downloads": -1, "filename": "characteristic-0.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "fad6f0f065e2f7dcd8b5d75ce88b175f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6816, "upload_time": "2014-05-11T18:18:03", "url": "https://files.pythonhosted.org/packages/5a/32/48ea1b67337168ab98825e0ebe618573b29fb5486ddb3cb3e6588e3158fa/characteristic-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b4eba58e38133e5e90e8c679c116aa62", "sha256": "d470fac48accbca41038a321abd0c1a7428beef5ce5d80b1d6dfb9771305906a" }, "downloads": -1, "filename": "characteristic-0.1.0.tar.gz", "has_sig": true, "md5_digest": "b4eba58e38133e5e90e8c679c116aa62", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6546, "upload_time": "2014-05-11T18:18:05", "url": "https://files.pythonhosted.org/packages/e2/f2/2cc176a134da80b3484a21467321f2121af0505cf9f49245c9a5bd7715cf/characteristic-0.1.0.tar.gz" } ], "14.0.0": [ { "comment_text": "", "digests": { "md5": "bb597987426908cdf3b31bea61c29dbd", "sha256": "69d25880ba15dc08b0c77edef0d59dd53887d647aad3dd318ccb4e220b6c79a4" }, "downloads": -1, "filename": "characteristic-14.0.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "bb597987426908cdf3b31bea61c29dbd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12715, "upload_time": "2014-08-21T14:51:12", "url": "https://files.pythonhosted.org/packages/8f/49/83a1c0b9c86e08e5684424e8366b8ea196a9c999c1c959b202b956b08f78/characteristic-14.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "baea1f28f71c47d88d7d24335f814ee8", "sha256": "11998d28bf71c7610ecd5393d47cb09e2459e80ee64c4c426a1b5986b6bdf55d" }, "downloads": -1, "filename": "characteristic-14.0.0.tar.gz", "has_sig": true, "md5_digest": "baea1f28f71c47d88d7d24335f814ee8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24498, "upload_time": "2014-08-21T14:51:15", "url": "https://files.pythonhosted.org/packages/38/63/7cb8eb9c28020938d026d65225e1e980753fa18ada2f32aab447f9ba80cc/characteristic-14.0.0.tar.gz" } ], "14.1.0": [ { "comment_text": "", "digests": { "md5": "4a9eb32aab16362fb4ca4e1f5670d11e", "sha256": "827e86ceee66a03239a0a359c31bd7acd907fc1a0ad26aa5d141df88ab5a4cda" }, "downloads": -1, "filename": "characteristic-14.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "4a9eb32aab16362fb4ca4e1f5670d11e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12864, "upload_time": "2014-08-22T13:49:54", "url": "https://files.pythonhosted.org/packages/10/73/e198b9a481ad1bca326a2266b2d8aaac541f2ac1d2c9fd87a9e042878f7c/characteristic-14.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "68ea7e28997fc57d3631791ec0567a05", "sha256": "91e254948180678dd69e6143202b4686f2fa47cce136936079bb4d9a3b82419d" }, "downloads": -1, "filename": "characteristic-14.1.0.tar.gz", "has_sig": true, "md5_digest": "68ea7e28997fc57d3631791ec0567a05", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24612, "upload_time": "2014-08-22T13:50:02", "url": "https://files.pythonhosted.org/packages/db/c4/20a3f796b718d1dba3b23436a82fa68032d7e0562b038e9f1925b24b1ca0/characteristic-14.1.0.tar.gz" } ], "14.2.0": [ { "comment_text": "", "digests": { "md5": "134d8227a945dc7af36ead3c1af47801", "sha256": "92453489cc5913d4fb1aeb7220cdd646862dbcb7247c9b099cc2bdf6131b7a59" }, "downloads": -1, "filename": "characteristic-14.2.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "134d8227a945dc7af36ead3c1af47801", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14918, "upload_time": "2014-10-30T11:49:32", "url": "https://files.pythonhosted.org/packages/cb/5f/c3b7846ba81bd534fb956f2fc02203a6d58e87166f13cb7380edc8fbb0f9/characteristic-14.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "810ef988ad81815df3017990c7ff645e", "sha256": "10b6fbc773a0965d2e5c8f757bfdf1415929792cdf79c1aecc32ffe8b36466b2" }, "downloads": -1, "filename": "characteristic-14.2.0.tar.gz", "has_sig": true, "md5_digest": "810ef988ad81815df3017990c7ff645e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26670, "upload_time": "2014-10-30T11:49:35", "url": "https://files.pythonhosted.org/packages/8e/a0/1577d1f991e39150cea6c834f7eb655ad8859a9a0c1c0cc782cde789d406/characteristic-14.2.0.tar.gz" } ], "14.3.0": [ { "comment_text": "", "digests": { "md5": "1145a7ccffa17f78e23b7e23740e2af0", "sha256": "5324ca333fc9705bf0f1a38d36021baa37888590ccfe8c3738c68adfa609bbbb" }, "downloads": -1, "filename": "characteristic-14.3.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "1145a7ccffa17f78e23b7e23740e2af0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15045, "upload_time": "2014-12-19T13:49:04", "url": "https://files.pythonhosted.org/packages/fa/0d/7fa43a50feaa8896e9acbb91d2256dc1341e8f9a0be629138490ee1f849e/characteristic-14.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b249368dd021fde1c06b4802867c0913", "sha256": "ded68d4e424115ed44e5c83c2a901a0b6157a959079d7591d92106ffd3ada380" }, "downloads": -1, "filename": "characteristic-14.3.0.tar.gz", "has_sig": true, "md5_digest": "b249368dd021fde1c06b4802867c0913", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26993, "upload_time": "2014-12-19T13:49:07", "url": "https://files.pythonhosted.org/packages/dc/66/54b7a4758ea44fbc93895c7745060005272560fb2c356f2a6f7448ef9a80/characteristic-14.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1145a7ccffa17f78e23b7e23740e2af0", "sha256": "5324ca333fc9705bf0f1a38d36021baa37888590ccfe8c3738c68adfa609bbbb" }, "downloads": -1, "filename": "characteristic-14.3.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "1145a7ccffa17f78e23b7e23740e2af0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15045, "upload_time": "2014-12-19T13:49:04", "url": "https://files.pythonhosted.org/packages/fa/0d/7fa43a50feaa8896e9acbb91d2256dc1341e8f9a0be629138490ee1f849e/characteristic-14.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b249368dd021fde1c06b4802867c0913", "sha256": "ded68d4e424115ed44e5c83c2a901a0b6157a959079d7591d92106ffd3ada380" }, "downloads": -1, "filename": "characteristic-14.3.0.tar.gz", "has_sig": true, "md5_digest": "b249368dd021fde1c06b4802867c0913", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26993, "upload_time": "2014-12-19T13:49:07", "url": "https://files.pythonhosted.org/packages/dc/66/54b7a4758ea44fbc93895c7745060005272560fb2c356f2a6f7448ef9a80/characteristic-14.3.0.tar.gz" } ] }