Not all nor any. Just the one.
Project description
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c254c340f838d7f50c99f8fe0e741f6898e4c9f8fed1ae03186e5294374266e
|
|
| MD5 |
156ca45a8033ccbe48600766642dd142
|
|
| BLAKE2b-256 |
fc1d165a5a030f299aa281801646a8867bc8745eec0441c78c530e78b7ae16c3
|
File details
Details for the file one-0.2.1-py2.py3-none-any.whl.
File metadata
- Download URL: one-0.2.1-py2.py3-none-any.whl
- Upload date:
- Size: 4.2 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a82982bc3da1ccf75e81ede365ac9c27630e8d6c21ac1d6055bf7cbe7af8eae4
|
|
| MD5 |
1badc38a3e34138e7f8849f637504307
|
|
| BLAKE2b-256 |
bd8ae4d72608ff3d97e99261aee7d099a80f1b40243217fe86bf5f1110ea41d8
|