{ "info": { "author": "Fernando Macedo", "author_email": "fgmacedo@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "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": "============\nChoices Enum\n============\n\n\n.. image:: https://img.shields.io/pypi/v/choicesenum.svg\n :target: https://pypi.python.org/pypi/choicesenum\n\n.. image:: https://travis-ci.org/loggi/python-choicesenum.svg?branch=master\n :target: https://travis-ci.org/loggi/python-choicesenum\n\n.. image:: https://readthedocs.org/projects/python-choicesenum/badge/?version=latest\n :target: https://python-choicesenum.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. image:: https://coveralls.io/repos/github/loggi/python-choicesenum/badge.svg?branch=master\n :target: https://coveralls.io/github/loggi/python-choicesenum?branch=master\n\n\nPython's Enum with extra powers to play nice with labels and choices fields.\n\n* Free software: BSD license\n* Documentation: https://python-choicesenum.readthedocs.io.\n\n------------\nInstallation\n------------\n\nInstall ``choicesenum`` using pip::\n\n $ pip install choicesenum\n\n--------\nFeatures\n--------\n\n* An ``ChoicesEnum`` that can be used to create constant groups.\n* ``ChoicesEnum`` can define labels to be used in `choices` fields.\n* Django fields included: ``EnumCharField`` and ``EnumIntegerField``.\n* Support (tested) for Python 2.7, 3.4, 3.5, 3.6 and 3.7.\n* Support (tested) for Django 1.9, 1.10, 1.11, 2.0 and 2.1.\n\n--------------\nUsage examples\n--------------\n\nExample with ``HttpStatuses``:\n\n.. code:: python\n\n class HttpStatuses(ChoicesEnum):\n OK = 200\n BAD_REQUEST = 400\n UNAUTHORIZED = 401\n FORBIDDEN = 403\n\nExample with ``Colors``:\n\n.. code:: python\n\n from choicesenum import ChoicesEnum\n\n class Colors(ChoicesEnum):\n RED = '#f00', 'Vermelho'\n GREEN = '#0f0', 'Verde'\n BLUE = '#00f', 'Azul'\n\n\nComparison\n----------\n\nAll `Enum` types can be compared against their values:\n\n.. code:: python\n\n assert HttpStatuses.OK == 200\n assert HttpStatuses.BAD_REQUEST == 400\n assert HttpStatuses.UNAUTHORIZED == 401\n assert HttpStatuses.FORBIDDEN == 403\n\n status_code = HttpStatuses.OK\n assert 200 <= status_code <= 300\n\n assert Colors.RED == '#f00'\n assert Colors.GREEN == '#0f0'\n assert Colors.BLUE == '#00f'\n\n\nLabel for free\n--------------\n\nAll `Enum` types have by default a `display` derived from the enum identifier:\n\n.. code:: python\n\n assert HttpStatuses.OK.display == 'Ok'\n assert HttpStatuses.BAD_REQUEST.display == 'Bad request'\n assert HttpStatuses.UNAUTHORIZED.display == 'Unauthorized'\n assert HttpStatuses.FORBIDDEN.display == 'Forbidden'\n\n\nYou can easily define your own custom display for an `Enum` item using a tuple:\n\n\n.. code:: python\n\n class HttpStatuses(ChoicesEnum):\n OK = 200, 'Everything is fine'\n BAD_REQUEST = 400, 'You did a mistake'\n UNAUTHORIZED = 401, 'I know your IP'\n FORBIDDEN = 403\n\n assert HttpStatuses.OK.display == 'Everything is fine'\n assert HttpStatuses.BAD_REQUEST.display == 'You did a mistake'\n assert HttpStatuses.UNAUTHORIZED.display == 'I know your IP'\n assert HttpStatuses.FORBIDDEN.display == 'Forbidden'\n\n\nDynamic properties\n------------------\n\nFor each enum item, a dynamic property ``is_`` is generated to allow\nquick boolean checks:\n\n.. code:: python\n\n color = Colors.RED\n assert color.is_red\n assert not color.is_blue\n assert not color.is_green\n\nThis feature is usefull to avoid comparing a received enum value against a know enum item.\n\nFor example, you can replace code like this:\n\n.. code:: python\n\n # status = HttpStatuses.BAD_REQUEST\n\n def check_status(status):\n if status == HttpStatuses.OK:\n print(\"Ok!\")\n\nTo this:\n\n.. code:: python\n\n def check_status(status):\n if status.is_ok:\n print(\"Ok!\")\n\n\nCustom methods and properties\n-----------------------------\n\nYou can declare custom properties and methods:\n\n.. code:: python\n\n class HttpStatuses(ChoicesEnum):\n OK = 200, 'Everything is fine'\n BAD_REQUEST = 400, 'You did a mistake'\n UNAUTHORIZED = 401, 'I know your IP'\n FORBIDDEN = 403\n\n @property\n def is_error(self):\n return self >= self.BAD_REQUEST\n\n assert HttpStatuses.OK.is_error is False\n assert HttpStatuses.BAD_REQUEST.is_error is True\n assert HttpStatuses.UNAUTHORIZED.is_error is True\n\nIteration\n---------\n\nThe enum type is iterable:\n\n.. code:: python\n\n >>> for color in Colors:\n ... print(repr(color))\n Color('#f00').RED\n Color('#0f0').GREEN\n Color('#00f').BLUE\n\n\nOrder is guaranteed only for py3.4+. For fixed order in py2.7, you\ncan implement a magic attribute ``_order_``:\n\n.. code:: python\n\n from choicesenum import ChoicesEnum\n\n class Colors(ChoicesEnum):\n _order_ = 'RED GREEN BLUE'\n\n RED = '#f00', 'Vermelho'\n GREEN = '#0f0', 'Verde'\n BLUE = '#00f', 'Azul'\n\nChoices\n-------\n\nUse ``.choices()`` method to receive a list of tuples ``(item, display)``:\n\n.. code:: python\n\n assert list(Colors.choices()) == [\n ('#f00', 'Vermelho'),\n ('#0f0', 'Verde'),\n ('#00f', 'Azul'),\n ]\n\nValues\n-------\n\nUse ``.values()`` method to receive a list of the inner values:\n\n.. code:: python\n\n assert Colors.values() == ['#f00', '#0f0', '#00f', ]\n\nOptions\n-------\n\nEven if a ``ChoicesEnum`` class is an iterator by itself, you can use ``.options()`` to convert the enum items to a list:\n\n.. code:: python\n\n assert Colors.options() == [Colors.RED, Colors.GREEN, Colors.BLUE]\n\nA \"dict like\" get\n-----------------\n\nUse ``.get(value, default=None)`` method to receive ``default`` if ``value`` is not an item of enum:\n\n.. code:: python\n\n assert Colors.get(Colors.RED) == Colors.RED\n assert Colors.get('#f00') == Colors.RED\n assert Colors.get('undefined_color') is None\n assert Colors.get('undefined_color', Colors.RED) == Colors.RED\n\nCompatibility\n-------------\n\nThe enum item can be used whenever the value is needed:\n\n.. code:: python\n\n assert u'Currrent color is {c} ({c.display})'.format(c=color) ==\\\n u'Currrent color is #f00 (Vermelho)'\n\nEven in dicts and sets, as it shares the same `hash()` from his value:\n\n.. code:: python\n\n d = {\n HttpStatuses.OK.value: \"using value\",\n HttpStatuses.BAD_REQUEST: \"using enum\",\n 401: \"from original value\",\n }\n assert d[HttpStatuses.OK] == \"using value\"\n assert d[HttpStatuses.BAD_REQUEST.value] == \"using enum\"\n assert d[HttpStatuses.OK] == d[HttpStatuses.OK.value]\n assert d[HttpStatuses.UNAUTHORIZED] == d[401]\n\nThere's also optimistic casting of inner types:\n\n.. code:: python\n\n assert int(HttpStatuses.OK) == 200\n assert float(HttpStatuses.OK) == 200.0\n assert str(HttpStatuses.BAD_REQUEST) == \"400\"\n\n\nCheck membership:\n\n.. code:: python\n\n assert HttpStatuses.OK in HttpStatuses\n assert 200 in HttpStatuses\n assert 999 not in HttpStatuses\n\n\nJSON\n....\n\nIf you want json serialization, you have at least two options:\n\n1. Patch the default serializer.\n2. Write a custom JSONEncoder.\n\nChoicesEnum comes with a handy patch funtion, you need to add this\ncode to somewhere at the top of everything to automagically add\njson serialization capabilities:\n\n.. code:: python\n\n from choicesenum.patches import patch_json\n patch_json()\n\n.. note::\n\n Eventually ``__json__`` will be added to the stdlib, see\n https://bugs.python.org/issue27362\n\n\n------\nDjango\n------\n\nFields\n------\n\nUsage with the custom Django fields:\n\n.. code:: python\n\n from django.db import models\n from choicesenum.django.fields import EnumCharField\n\n class ColorModel(models.Model):\n color = EnumCharField(\n max_length=100,\n enum=Colors,\n default=Colors.GREEN,\n )\n\n instance = ColorModel()\n assert instance.color == Colors.GREEN\n assert instance.color.is_green is True\n assert instance.color.value == Colors.GREEN.value == '#0f0'\n assert instance.color.display == Colors.GREEN.display\n\n instance.color = '#f00'\n assert instance.color == '#f00'\n assert instance.color.value == '#f00'\n assert instance.color.display == 'Vermelho'\n\n\nIs guaranteed that the field value is *always* a `ChoicesEnum` item. Pay\nattention that the field will only accept valid values for the ``Enum`` in use,\nso if your field allow `null`, your enum should also:\n\n.. code:: python\n\n from django.db import models\n from choicesenum import ChoicesEnum\n from choicesenum.django.fields import EnumIntegerField\n\n class UserStatus(ChoicesEnum):\n UNDEFINED = None\n PENDING = 1\n ACTIVE = 2\n INACTIVE = 3\n DELETED = 4\n\n\n class User(models.Model):\n status = EnumIntegerField(enum=UserStatus, null=True, )\n\n instance = User()\n assert instance.status.is_undefined is True\n assert instance.status.value is None\n assert instance.status == UserStatus.UNDEFINED\n assert instance.status.display == 'Undefined'\n\n # again...\n instance.status = None\n assert instance.status.is_undefined is True\n\n\n--------\nGraphene\n--------\n\nUsage with Graphene_ Enums:\n\n.. _Graphene: http://docs.graphene-python.org/en/latest/types/enums/#usage-with-python-enums\n\n.. code:: python\n\n UserStatusEnum = graphene.Enum.from_enum(UserStatus)\n\n\n----------\nSchematics\n----------\n\nUsage with Schematics_ Enums:\n\n.. _Schematics: https://schematics.readthedocs.io/en/latest/usage/types.html\n\n.. code:: python\n\n from schematics.models import Model as SchematicModel\n from schematics.types import StringType, DateTimeType\n from choicesenum import ChoicesEnum\n from choicesenum.schematics.types import ChoicesEnumType\n\n class HttpStatus(ChoicesEnum):\n OK = 200\n BAD_REQUEST = 400\n UNAUTHORIZED = 401\n FORBIDDEN = 403\n\n class CustomSchematicModel(SchematicModel):\n name = StringType(required=True, max_length=255)\n created = DateTimeType(required=True, formats=('%d/%m/%Y', ''))\n http = ChoicesEnumType(HttpStatuses, required=True)\n\n\n-------\nHistory\n-------\n\n0.6.0 (2019-09-05)\n------------------\n\n* Adding schematics contrib type ChoicesEnumType.\n* Drop support for Django 1.6, 1.7, 1.8.\n\n\n\n0.5.3 (2019-02-06)\n------------------\n\n* Fix Django migrations with default values for Django 1.7+.\n\n\n0.5.2 (2019-01-18)\n------------------\n\n* Optimize member check and dynamic creation of `is_` properties.\n\n\n0.5.1 (2019-01-04)\n------------------\n\n* Fix readme RST (requires new Pypi upload).\n\n\n0.5.0 (2019-01-04)\n------------------\n\n* Membership test (item in Enum) returning valid results for primitive values.\n* New dict-like `.get` method able to return a default value (thanks @leandrogs).\n* Django: Support Postgres array functions and queries (thanks @tomfa).\n* Django: Support for deferring an enum field using `queryset.defer()` (thanks @noamkush).\n* Django: 2.1 support.\n\n\n0.4.0 (2018-07-13)\n------------------\n\n* Optimistic casting of inner types (thanks @gabisurita).\n* Optional stdlib patch to automagic json serialization support.\n* Add Python3.7 to the test matrix.\n\n\n0.3.0 (2018-06-22)\n------------------\n\n* Official Django 2.0 support (0.2.2 just works fine too).\n* ``ChoicesEnum`` sharing the same hash() as his value. Can be used to retrieve/restore items in dicts (`d[enum] == d[enum.value]`).\n\n0.2.2 (2017-12-01)\n------------------\n\n* Fix: Support queries through `select_related` with no `None` value defined (thanks @klette).\n\n\n0.2.1 (2017-09-30)\n------------------\n\n* Fix South migrations for Django 1.6.\n\n\n0.2.0 (2017-09-11)\n------------------\n\n* ``ChoicesEnum`` items are comparable by their values (==, !=, >, >=, <, <=) (thanks @jodal).\n* +``ChoicesEnum.values``: Returns all the Enum's raw values (eq: ``[x.value for x in Enum]``).\n\n0.1.7 (2017-09-10)\n------------------\n\n* Fix: ``ChoicesEnum`` is now hashable (thanks @jodal).\n\n\n0.1.6 (2017-09-08)\n------------------\n\n* Fix: Proxy ``__len__`` calls to the inner enum value.\n\n\n0.1.5 (2017-09-05)\n------------------\n\n* +ChoicesEnum.description: Alias for `label`, allow enum descriptors to be used by Graphene.\n\n\n0.1.4 (2017-08-28)\n------------------\n\n* Fix South migrations for Django 1.6.\n* ``ChoicesEnum`` repr can be used to reconstruct an instance (``item == eval(repr(item))``).\n\n\n0.1.3 (2017-08-28)\n------------------\n\n* Fix sdist not including sub-modules (django contrib).\n\n0.1.2 (2017-08-27)\n------------------\n\n* README fixes and improvements.\n\n0.1.0 (2017-08-27)\n------------------\n\n* First release on PyPI.\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/loggi/python-choicesenum", "keywords": "choicesenum", "license": "BSD license", "maintainer": "", "maintainer_email": "", "name": "choicesenum", "package_url": "https://pypi.org/project/choicesenum/", "platform": "", "project_url": "https://pypi.org/project/choicesenum/", "project_urls": { "Homepage": "https://github.com/loggi/python-choicesenum" }, "release_url": "https://pypi.org/project/choicesenum/0.6.0/", "requires_dist": [ "enum34 ; python_version < \"3.4\"" ], "requires_python": "", "summary": "Python's Enum with extra powers to play nice with labels and choices fields", "version": "0.6.0" }, "last_serial": 5788497, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "dd810feebc065ed419db4e3b6d0a78bb", "sha256": "1c77f866e608ddce776ddc634b7e8030b3c16d9efc84f26b9045e7e31a287b2d" }, "downloads": -1, "filename": "choicesenum-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "dd810feebc065ed419db4e3b6d0a78bb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5104, "upload_time": "2017-08-28T00:16:14", "url": "https://files.pythonhosted.org/packages/08/b6/38c5d2d9221407bdfbd655de8cb41538ee84333dbe64979d0844b412849a/choicesenum-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8ddf72cd6258e6a2700f9b02a9b875bf", "sha256": "a56c3018c6c5c9784f303e1e496794db4c9747fb4ef14a895d98db8768ea89d6" }, "downloads": -1, "filename": "choicesenum-0.1.0.tar.gz", "has_sig": false, "md5_digest": "8ddf72cd6258e6a2700f9b02a9b875bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16324, "upload_time": "2017-08-28T00:16:15", "url": "https://files.pythonhosted.org/packages/b9/19/0ee70df9404f2d00d4339ab0aa2e35ad4d632a1cc0e5ad6b738f6d807159/choicesenum-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "7d41b9d1c66b90d03bf5adeadf9db100", "sha256": "d9f86e075f3924ed909bebddfcb504911d98c2dc81d1e70de71a98553254b33d" }, "downloads": -1, "filename": "choicesenum-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7d41b9d1c66b90d03bf5adeadf9db100", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6079, "upload_time": "2017-08-28T00:53:02", "url": "https://files.pythonhosted.org/packages/bf/35/e77b3657fd3b26ad56aa54db977fb1f271e4817d01fb253ab89cc868a74e/choicesenum-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6af71be355b8f8c177283b8172118cf0", "sha256": "615bdf0039a9c3d2cc8e3f3778302c87153b1fc9a84d73b167a6d64a5693ff54" }, "downloads": -1, "filename": "choicesenum-0.1.1.tar.gz", "has_sig": false, "md5_digest": "6af71be355b8f8c177283b8172118cf0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17299, "upload_time": "2017-08-28T00:53:06", "url": "https://files.pythonhosted.org/packages/cf/dd/05d17b4674d2561163e8fbbcfff7d36902cd3143611b5aaf1c2aff38f31b/choicesenum-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "007869e1e8d57756a3bd20b4c520316d", "sha256": "dca7d4800d69cb4cb497ef56041a673030894a62090fa3a2fd2141627db02398" }, "downloads": -1, "filename": "choicesenum-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "007869e1e8d57756a3bd20b4c520316d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6092, "upload_time": "2017-08-28T02:08:03", "url": "https://files.pythonhosted.org/packages/8a/45/2c2267dbab7121591255a882018258ca4602c0de926855fa6704b6e3b16b/choicesenum-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "55fee10428827209cef3748ad426c1fb", "sha256": "d7bff11cb7114d9b4196e0b1a6a39463a9ff2617ab6041ce0b792877b2dbb1ab" }, "downloads": -1, "filename": "choicesenum-0.1.2.tar.gz", "has_sig": false, "md5_digest": "55fee10428827209cef3748ad426c1fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17296, "upload_time": "2017-08-28T02:08:04", "url": "https://files.pythonhosted.org/packages/29/8e/abb5e0c0cfc330ecd627ad2e2bf558091a650fbd4c94d9383d90184bddd4/choicesenum-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "8890dc9558b84352fb976349086060de", "sha256": "5ee68109a3dd6064e7e31a0b4fbd9b1aec0761facf49068041df81ae71344bbf" }, "downloads": -1, "filename": "choicesenum-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8890dc9558b84352fb976349086060de", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8394, "upload_time": "2017-08-28T15:32:29", "url": "https://files.pythonhosted.org/packages/2b/51/ecbf84debaa86f89fea452c3b4d934d0ab28cdf1eca2ab3338746c22e5fc/choicesenum-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e9fe0c94eaa8e9f2c800c53c3782a1e4", "sha256": "7366fb50ec35be3536ad60240e07ba6612cd88739d6723928002056626455539" }, "downloads": -1, "filename": "choicesenum-0.1.3.tar.gz", "has_sig": false, "md5_digest": "e9fe0c94eaa8e9f2c800c53c3782a1e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18828, "upload_time": "2017-08-28T15:32:30", "url": "https://files.pythonhosted.org/packages/45/75/fe727a5868441cff239e934cd83ebc1905fb8666ee9e8628e6e1e25b6420/choicesenum-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "a1811957b0c694fa1620b368aebf1661", "sha256": "2a4eeea93b3cf14cb5721e469f08555d38038c97a1bca8afc23506497af905a4" }, "downloads": -1, "filename": "choicesenum-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a1811957b0c694fa1620b368aebf1661", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9244, "upload_time": "2017-08-29T01:13:51", "url": "https://files.pythonhosted.org/packages/df/fb/f4075095dec44b0837e18b8ce1b8f3f935943ba990002fcb8b558f932953/choicesenum-0.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "70074ff8dde68dfe281c3cb9feabfd0e", "sha256": "f5b01426022f65176de8017e2db4a52a1635f8bc4f65e954457b4ef1ecfd8ed7" }, "downloads": -1, "filename": "choicesenum-0.1.4.tar.gz", "has_sig": false, "md5_digest": "70074ff8dde68dfe281c3cb9feabfd0e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19946, "upload_time": "2017-08-29T01:13:53", "url": "https://files.pythonhosted.org/packages/78/71/ea5d42ba1a85fbeb99fc8174a826c542f53c35a8403105e26deae6a84faf/choicesenum-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "b17c9d0ff9db8a00edb59724dfed0e9a", "sha256": "efe9f420456e25e414cb8287a62b7c0e4f1ad2d1a20348deca53a52a71eb932a" }, "downloads": -1, "filename": "choicesenum-0.1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b17c9d0ff9db8a00edb59724dfed0e9a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9591, "upload_time": "2017-09-05T16:10:04", "url": "https://files.pythonhosted.org/packages/d9/6c/d2c5ababc6248472fa469754da0130dae8d825e6fcc2dce83674992c8bd9/choicesenum-0.1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8c9d89574d7803307e146a7a3256ac35", "sha256": "b790dcdd5405c784749df4f9b121eca97a0cc2065ea58c9a76a6cd983de0cdae" }, "downloads": -1, "filename": "choicesenum-0.1.5.tar.gz", "has_sig": false, "md5_digest": "8c9d89574d7803307e146a7a3256ac35", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20220, "upload_time": "2017-09-05T16:10:05", "url": "https://files.pythonhosted.org/packages/1a/d4/ea27516ebe96de630938ee4fac6fca8761bc6c7c82f78bd9ab0eb8a26b3f/choicesenum-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "c66ada4ed08d6b463557a5b7131daf61", "sha256": "54fc04b331261cb2bc384cd18c177599209f3132340e0cf7f1ca1af9807af241" }, "downloads": -1, "filename": "choicesenum-0.1.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c66ada4ed08d6b463557a5b7131daf61", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9687, "upload_time": "2017-09-08T19:03:59", "url": "https://files.pythonhosted.org/packages/1d/b5/fce3cd6bdb4f721a7cb8180d081beb4f895324296f60d234394785efecbd/choicesenum-0.1.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4465606f061be768894287f5477ac368", "sha256": "c9defac0496e9cef3e5bc1ef5d102d36c96da283d3d43b9ae0486f0bd22d9812" }, "downloads": -1, "filename": "choicesenum-0.1.6.tar.gz", "has_sig": false, "md5_digest": "4465606f061be768894287f5477ac368", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20457, "upload_time": "2017-09-08T19:04:03", "url": "https://files.pythonhosted.org/packages/c8/11/edb7ad2eb81819ddbbbffe76ea6c8aee3f1b0562afeaec372e0ccabbed62/choicesenum-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "3bbb1343d23da173e429898ab2f7b7dc", "sha256": "c085685da4056e8654684a454ed0292996ec7d7b0030af25b61bc89842b256f0" }, "downloads": -1, "filename": "choicesenum-0.1.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3bbb1343d23da173e429898ab2f7b7dc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9769, "upload_time": "2017-09-10T18:39:13", "url": "https://files.pythonhosted.org/packages/6e/34/ccaa72f69943b5169f1ac8f81ee73b281332641ef3578111f55dd8449163/choicesenum-0.1.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "949af8d2286858c183d9b81fe187062b", "sha256": "2fc7217e91df4ecba759ed50d787429bfb00532512938380084796ceab01659e" }, "downloads": -1, "filename": "choicesenum-0.1.7.tar.gz", "has_sig": false, "md5_digest": "949af8d2286858c183d9b81fe187062b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20649, "upload_time": "2017-09-10T18:39:14", "url": "https://files.pythonhosted.org/packages/f4/f3/0cab705e587166032f26de6023a307cb46038d85828ba27cb207318cb7e5/choicesenum-0.1.7.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "7b60d7f6344aedb866c9867d52bc835a", "sha256": "5ac1fed6a2d4e8c2c5df64fff401573d6950e9d75a9138fe02bba1ea79e159f9" }, "downloads": -1, "filename": "choicesenum-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7b60d7f6344aedb866c9867d52bc835a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10239, "upload_time": "2017-09-11T04:45:40", "url": "https://files.pythonhosted.org/packages/11/0e/ba18bf899e11da149cf14c4cf043a6de5781d1d1df8f0b1a5da0a5b3ac9e/choicesenum-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1490a7d030281dcf8400c32e57e1a726", "sha256": "635a28347e0d16c530d99c696a60bfab96005852a04de04b53bca4f04920ba78" }, "downloads": -1, "filename": "choicesenum-0.2.0.tar.gz", "has_sig": false, "md5_digest": "1490a7d030281dcf8400c32e57e1a726", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21782, "upload_time": "2017-09-11T04:45:42", "url": "https://files.pythonhosted.org/packages/d5/b9/bda6f279daf9aae415c15ba235848a6b905b232f3b9bd660ec5685ca5d19/choicesenum-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "7def5480b44ee3b7c339de94adcb0453", "sha256": "4fd2593578f14929515e9d3c38a619bb4c0fb5705bef0a8298351ca6efd8f2bf" }, "downloads": -1, "filename": "choicesenum-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7def5480b44ee3b7c339de94adcb0453", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10444, "upload_time": "2017-09-30T20:40:44", "url": "https://files.pythonhosted.org/packages/b3/a6/094ccbbc3eae726f9f689807312222a64d4ef5b03029520d00e8feeee60f/choicesenum-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "66acd55bd386683b4d24eabe69e14360", "sha256": "eb3ba7e0ab35d34d5007ad5b17c680d49f8f3f48c76d09639cda27c44200eeba" }, "downloads": -1, "filename": "choicesenum-0.2.1.tar.gz", "has_sig": false, "md5_digest": "66acd55bd386683b4d24eabe69e14360", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22180, "upload_time": "2017-09-30T20:40:45", "url": "https://files.pythonhosted.org/packages/20/5d/64f7a4183b88f67259abcfd7f137a5522619a460887203294b61ff23d5b3/choicesenum-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "a2ffda9dca31e0b01d6240882addf5d9", "sha256": "c8ca7c21a61e5df9b0c6c4cefe3a6de516925f5a510bdbc2c7349122e6707e26" }, "downloads": -1, "filename": "choicesenum-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a2ffda9dca31e0b01d6240882addf5d9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10703, "upload_time": "2017-12-01T14:20:36", "url": "https://files.pythonhosted.org/packages/48/fa/9c2ac0753958ca7c195f3089087acf8e291808aa90ae4f09a0be5fbb8425/choicesenum-0.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aa26be366042676636133fe34565ddac", "sha256": "e16f45c3fe9ea9978260eee7440950b58e5766570cbfc9af4886f77a504637dc" }, "downloads": -1, "filename": "choicesenum-0.2.2.tar.gz", "has_sig": false, "md5_digest": "aa26be366042676636133fe34565ddac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22570, "upload_time": "2017-12-01T14:20:38", "url": "https://files.pythonhosted.org/packages/70/30/58d725d11e5cd37c3831e2793355c02480c31b3859d773f44fee9d2901ec/choicesenum-0.2.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "a9446a77295f67891f6cc45b853d1e0b", "sha256": "e102b60c557b3f9b92b9848b8aff4331dec62e13c266dff00de3fb1d60e98ba1" }, "downloads": -1, "filename": "choicesenum-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a9446a77295f67891f6cc45b853d1e0b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7623, "upload_time": "2018-06-22T17:26:37", "url": "https://files.pythonhosted.org/packages/62/f5/a95652fb23bfa69f703cd9d9a054ff10554af456d8354054fb19cfeb2e35/choicesenum-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "78386849e8ba95d761ee66b4ec24f8b1", "sha256": "7c18ffc4683180718aef93e4369ca4b6313f94d4eb9c6c67db563b1ad5ce91af" }, "downloads": -1, "filename": "choicesenum-0.3.0.tar.gz", "has_sig": false, "md5_digest": "78386849e8ba95d761ee66b4ec24f8b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23256, "upload_time": "2018-06-22T17:26:37", "url": "https://files.pythonhosted.org/packages/59/c2/2b2ef182f5dc4a56e3debfdb516913568e08465cef83f540953c6e0eba1a/choicesenum-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "a36f9d968b93deb2dd6e02adc318ca5a", "sha256": "46c0225dba9441ff73af56e545c59075282124f28549649bf4457ce155b984cc" }, "downloads": -1, "filename": "choicesenum-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a36f9d968b93deb2dd6e02adc318ca5a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9037, "upload_time": "2018-07-14T00:39:20", "url": "https://files.pythonhosted.org/packages/57/f5/fe8eec26b5bfa4c1e8be38928f42de0e5dcd5abcd4a07f7b40f2b33b2846/choicesenum-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "42371ef9e144b84bbb3a3175a832b82b", "sha256": "f5bad4deaf51ccf6788f023164ec417f3bac4796845f4a0aa1579bd1489dd8ae" }, "downloads": -1, "filename": "choicesenum-0.4.0.tar.gz", "has_sig": false, "md5_digest": "42371ef9e144b84bbb3a3175a832b82b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25525, "upload_time": "2018-07-14T00:39:21", "url": "https://files.pythonhosted.org/packages/21/14/5a5ea32818e705f03cbc41dc1fa65970696a93dfadf6977d4edec819c07a/choicesenum-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "b45f5ea5b50f842fb9d5f73126478e07", "sha256": "7ed64a991610e8910455bc59447aabd81360be8308a2f9a255d17e966289891b" }, "downloads": -1, "filename": "choicesenum-0.5.0.tar.gz", "has_sig": false, "md5_digest": "b45f5ea5b50f842fb9d5f73126478e07", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25287, "upload_time": "2019-01-04T18:27:25", "url": "https://files.pythonhosted.org/packages/df/1d/e3f1da75328df74a04d6977d212d608a111fd70900245c4a810ffd94e6d5/choicesenum-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "8d0add68084db03aa7372683cfe1f0c5", "sha256": "b353a42af662627f3558cbbaea504bace1cd1f6ca8456b96f5bcf6053d605395" }, "downloads": -1, "filename": "choicesenum-0.5.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8d0add68084db03aa7372683cfe1f0c5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11173, "upload_time": "2019-01-04T18:49:36", "url": "https://files.pythonhosted.org/packages/4e/00/d9a6a1a29d04d6e21707bb7dac5204f4fa97cca11e302312451017b84b7f/choicesenum-0.5.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5c8ec985dd911aa76c60895fb20a7953", "sha256": "846d7575abda6a3219009541f751038ee063b718acd4347a7586a1c21083c46d" }, "downloads": -1, "filename": "choicesenum-0.5.1.tar.gz", "has_sig": false, "md5_digest": "5c8ec985dd911aa76c60895fb20a7953", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25321, "upload_time": "2019-01-04T18:40:47", "url": "https://files.pythonhosted.org/packages/0a/20/3b65def290ee6c3a10e1058c12dbdd94f2f92fd7289bef68666baafa1a21/choicesenum-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "e059a67149e1e4b276a11af27744b9a1", "sha256": "37a1855a5c4073bc60d19b7fe953de59f8c2dec03e216db0f7779b0f68f83d5c" }, "downloads": -1, "filename": "choicesenum-0.5.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e059a67149e1e4b276a11af27744b9a1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11206, "upload_time": "2019-02-06T14:59:35", "url": "https://files.pythonhosted.org/packages/f5/e5/f3db2966b15488a6128b777b3a7a8f2bb1d9ec6159efe8519976eac53f55/choicesenum-0.5.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a4e744d4b23ce4c6b3b55042eadfc7aa", "sha256": "e6986c27fa6e963af6dcea69ba68fc7bdf5c3a56a1c0d62fe5a8ec66bb178a96" }, "downloads": -1, "filename": "choicesenum-0.5.2.tar.gz", "has_sig": false, "md5_digest": "a4e744d4b23ce4c6b3b55042eadfc7aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25386, "upload_time": "2019-01-18T18:20:40", "url": "https://files.pythonhosted.org/packages/f0/ee/dfedcdb710eab84d185881a061ba8e443d96b188cd4861db507396ed67e5/choicesenum-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "526fb7ea6a7d1bb9c1eb0d959f5bf886", "sha256": "b7e4fb2811b5eb7454d1320a15e328d86b73824d4a7cfb04bb81302f24fc33a3" }, "downloads": -1, "filename": "choicesenum-0.5.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "526fb7ea6a7d1bb9c1eb0d959f5bf886", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11239, "upload_time": "2019-02-06T14:56:27", "url": "https://files.pythonhosted.org/packages/41/b9/6a5a6668b513a545fd12db2e8086d6268be69e67cbc0500dc63b190290f3/choicesenum-0.5.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5dc31182bde3fd785e2f51816aa81deb", "sha256": "9957be448b5e2219ee0cf10d8f2804bd2b2c712faa5be02af66b404bfa30c0a4" }, "downloads": -1, "filename": "choicesenum-0.5.3.tar.gz", "has_sig": false, "md5_digest": "5dc31182bde3fd785e2f51816aa81deb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25456, "upload_time": "2019-02-06T14:50:22", "url": "https://files.pythonhosted.org/packages/49/bf/59e5eb9ead46ec3dd820a01aa08a325bfa0defc1f431a98715592df015da/choicesenum-0.5.3.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "b3f80f8ddf14732a8b722666ed8c3b48", "sha256": "e3c59592290b19e0bbd259b81660d6090b685891b0ce32490197ba8b82c16c44" }, "downloads": -1, "filename": "choicesenum-0.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b3f80f8ddf14732a8b722666ed8c3b48", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11972, "upload_time": "2019-09-05T21:19:41", "url": "https://files.pythonhosted.org/packages/43/26/117120b1deacb22dc060a76a80adca97f23dcfe6539d22602b174ae61455/choicesenum-0.6.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7edb612e6c907f462b48d8d05e9938a1", "sha256": "597ab4105944152d4e7a9b2f2bcf219898fd7d4a29b816b91da329577b26197c" }, "downloads": -1, "filename": "choicesenum-0.6.0.tar.gz", "has_sig": false, "md5_digest": "7edb612e6c907f462b48d8d05e9938a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24996, "upload_time": "2019-09-05T21:19:42", "url": "https://files.pythonhosted.org/packages/d5/f9/eb4919902b1c9f43c0da0a1d54171ec4c059be4a4623d3a33f7e082113a8/choicesenum-0.6.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b3f80f8ddf14732a8b722666ed8c3b48", "sha256": "e3c59592290b19e0bbd259b81660d6090b685891b0ce32490197ba8b82c16c44" }, "downloads": -1, "filename": "choicesenum-0.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b3f80f8ddf14732a8b722666ed8c3b48", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11972, "upload_time": "2019-09-05T21:19:41", "url": "https://files.pythonhosted.org/packages/43/26/117120b1deacb22dc060a76a80adca97f23dcfe6539d22602b174ae61455/choicesenum-0.6.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7edb612e6c907f462b48d8d05e9938a1", "sha256": "597ab4105944152d4e7a9b2f2bcf219898fd7d4a29b816b91da329577b26197c" }, "downloads": -1, "filename": "choicesenum-0.6.0.tar.gz", "has_sig": false, "md5_digest": "7edb612e6c907f462b48d8d05e9938a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24996, "upload_time": "2019-09-05T21:19:42", "url": "https://files.pythonhosted.org/packages/d5/f9/eb4919902b1c9f43c0da0a1d54171ec4c059be4a4623d3a33f7e082113a8/choicesenum-0.6.0.tar.gz" } ] }