{ "info": { "author": "Mart\u00edn Gait\u00e1n", "author_email": "gaitan@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.5", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4" ], "description": "====================================\n``one``, the missing Python function\n====================================\n\n.. image:: https://pypip.in/d/one/badge.png\n :target: https://pypi.python.org/pypi/one\n\n.. image:: https://travis-ci.org/mgaitan/one.svg\n :target: https://travis-ci.org/mgaitan/one\n\n\nNot ``all`` nor ``any``: just the ``one``.\n\n``one`` is a simple function to check if there is a unique value\nthat evaluates to True in an iterable, and return it. Optionally,\nit receives a callable as the test function.\n\nExamples:\n\n.. code-block:: python\n\n >>> from one import one\n >>> one((True, False, False))\n True\n >>> one((True, False, True))\n False\n >>> one((0, 0, 'a'))\n 'a'\n >>> one((0, False, None))\n False\n >>> one((True, True))\n False\n >>> one(('', 1))\n 1\n >>> one((10, 20, 30, 42), lambda i: i > 40)\n 42\n\nInstall\n--------\n\n::\n\n pip install one\n\nUsage\n-----\n\n::\n\n from one import one\n\n\n\nPatterns and use cases\n----------------------\n\n``one`` could replace the following patterns:\n\n.. code-block:: python\n\n\n true_values = [i for i in iterable if cmp(i)]\n if len(true_values) == 1:\n return true_values[0]\n return False\n\n # using one\n return one(iterable, cmp)\n\nAnother pattern, is in a complex condition\n\n.. code-block:: python\n\n\n if ((a and not b and not c) or\n (b and not a and not c) or\n (c and not a and not b)):\n do_something()\n\n # using one\n if one((a, b, c)):\n do_something()\n\n\nA very frequent case is when you have values that must exclude each others.\n\n\n.. code-block:: python\n\n class ShopStore(models.Model):\n address = models.CharField(max_length=200, null=True, blank=True)\n is_online = models.BooleanField(default=False)\n\n def clean(self):\n if not one((self.address, self.is_online)):\n raise models.ValidationError(u'A shop must be online or physical, but not both')\n\n\nSend me your examples!", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mgaitan/one", "keywords": "one", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "one", "package_url": "https://pypi.org/project/one/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/one/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/mgaitan/one" }, "release_url": "https://pypi.org/project/one/0.2.1/", "requires_dist": null, "requires_python": null, "summary": "Not all nor any. Just the one.", "version": "0.2.1" }, "last_serial": 1236511, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "56ac98a60b1230b52bdb05747a6ca90b", "sha256": "396ea17447706573886746c47b479fcb4fb803e0f4f6cce2755e9aa6b55b07bb" }, "downloads": -1, "filename": "one-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "56ac98a60b1230b52bdb05747a6ca90b", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 3541, "upload_time": "2014-09-24T04:24:43", "url": "https://files.pythonhosted.org/packages/b0/b2/0280ba47b2cdd7fc6a0d7d822ad0edc61c9693ee7e5ed33c7b99272fe3f2/one-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "67d97d19436a6d3d692a28c83133ec97", "sha256": "f5b2e82372c5c548a640930229cfaf23327421bfaeecc37c54911b6cdd8140e9" }, "downloads": -1, "filename": "one-0.1.0.tar.gz", "has_sig": false, "md5_digest": "67d97d19436a6d3d692a28c83133ec97", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4475, "upload_time": "2014-09-24T04:24:39", "url": "https://files.pythonhosted.org/packages/3e/bf/dd5eeec131f428dc4619dfa492128cd5f62f132143741107dafbee0647b4/one-0.1.0.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "1e41064229710f855ed81d0224592f03", "sha256": "bb166547c9e7edf1d439ca1691d570cc6e7eedca063ae2a8c15fb3404c809842" }, "downloads": -1, "filename": "one-0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1e41064229710f855ed81d0224592f03", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 4206, "upload_time": "2014-09-24T14:26:24", "url": "https://files.pythonhosted.org/packages/d9/dd/fcdb58fd13f2f8df3735f9170fa4036a325f8c81dfcdaf5db1005c217ab9/one-0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "99613ca414efad72cffab776be5e2d79", "sha256": "9f489efa3ac24451ebb6cd10cb9219c5f3c6902570cf12b9b917c8c0eaf68e6a" }, "downloads": -1, "filename": "one-0.2.tar.gz", "has_sig": false, "md5_digest": "99613ca414efad72cffab776be5e2d79", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4960, "upload_time": "2014-09-24T14:26:21", "url": "https://files.pythonhosted.org/packages/a7/73/ecb6987eb1d30f97fe00fbd03ae0271cee931e009c2353e223cef07ede37/one-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "1badc38a3e34138e7f8849f637504307", "sha256": "a82982bc3da1ccf75e81ede365ac9c27630e8d6c21ac1d6055bf7cbe7af8eae4" }, "downloads": -1, "filename": "one-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1badc38a3e34138e7f8849f637504307", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 4244, "upload_time": "2014-09-24T14:49:23", "url": "https://files.pythonhosted.org/packages/bd/8a/e4d72608ff3d97e99261aee7d099a80f1b40243217fe86bf5f1110ea41d8/one-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "156ca45a8033ccbe48600766642dd142", "sha256": "4c254c340f838d7f50c99f8fe0e741f6898e4c9f8fed1ae03186e5294374266e" }, "downloads": -1, "filename": "one-0.2.1.tar.gz", "has_sig": false, "md5_digest": "156ca45a8033ccbe48600766642dd142", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4965, "upload_time": "2014-09-24T14:49:17", "url": "https://files.pythonhosted.org/packages/fc/1d/165a5a030f299aa281801646a8867bc8745eec0441c78c530e78b7ae16c3/one-0.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1badc38a3e34138e7f8849f637504307", "sha256": "a82982bc3da1ccf75e81ede365ac9c27630e8d6c21ac1d6055bf7cbe7af8eae4" }, "downloads": -1, "filename": "one-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1badc38a3e34138e7f8849f637504307", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 4244, "upload_time": "2014-09-24T14:49:23", "url": "https://files.pythonhosted.org/packages/bd/8a/e4d72608ff3d97e99261aee7d099a80f1b40243217fe86bf5f1110ea41d8/one-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "156ca45a8033ccbe48600766642dd142", "sha256": "4c254c340f838d7f50c99f8fe0e741f6898e4c9f8fed1ae03186e5294374266e" }, "downloads": -1, "filename": "one-0.2.1.tar.gz", "has_sig": false, "md5_digest": "156ca45a8033ccbe48600766642dd142", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4965, "upload_time": "2014-09-24T14:49:17", "url": "https://files.pythonhosted.org/packages/fc/1d/165a5a030f299aa281801646a8867bc8745eec0441c78c530e78b7ae16c3/one-0.2.1.tar.gz" } ] }