Skip to main content

Not all nor any. Just the one.

Project description

https://pypip.in/d/one/badge.png https://travis-ci.org/mgaitan/one.svg

Not all nor any: just the one.

one is a simple function to check if there is a unique value that evaluates to True in an iterable, and return it. Optionally, it receives a callable as the test function.

Examples:

>>> from one import one
>>> one((True, False, False))
True
>>> one((True, False, True))
False
>>> one((0, 0, 'a'))
'a'
>>> one((0, False, None))
False
>>> one((True, True))
False
>>> one(('', 1))
1
>>> one((10, 20, 30, 42), lambda i: i > 40)
42

Install

pip install one

Usage

from one import one

Patterns and use cases

one could replace the following patterns:

true_values = [i for i in iterable if cmp(i)]
if len(true_values) == 1:
    return true_values[0]
return False

# using one
return one(iterable, cmp)

Another pattern, is in a complex condition

if ((a and not b and not c) or
     (b and not a and not c) or
      (c and not a and not b)):
    do_something()

# using one
if one((a, b, c)):
    do_something()

A very frequent case is when you have values that must exclude each others.

class ShopStore(models.Model):
    address = models.CharField(max_length=200, null=True, blank=True)
    is_online = models.BooleanField(default=False)

    def clean(self):
        if not one((self.address, self.is_online)):
            raise models.ValidationError(u'A shop must be online or physical, but not both')

Send me your examples!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

one-0.2.1.tar.gz (5.0 kB view details)

Uploaded Source

Built Distribution

one-0.2.1-py2.py3-none-any.whl (4.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file one-0.2.1.tar.gz.

File metadata

  • Download URL: one-0.2.1.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for one-0.2.1.tar.gz
Algorithm Hash digest
SHA256 4c254c340f838d7f50c99f8fe0e741f6898e4c9f8fed1ae03186e5294374266e
MD5 156ca45a8033ccbe48600766642dd142
BLAKE2b-256 fc1d165a5a030f299aa281801646a8867bc8745eec0441c78c530e78b7ae16c3

See more details on using hashes here.

File details

Details for the file one-0.2.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for one-0.2.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a82982bc3da1ccf75e81ede365ac9c27630e8d6c21ac1d6055bf7cbe7af8eae4
MD5 1badc38a3e34138e7f8849f637504307
BLAKE2b-256 bd8ae4d72608ff3d97e99261aee7d099a80f1b40243217fe86bf5f1110ea41d8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page