#!/usr/bin/env python
# -*- coding: utf-8 -*-
from tocoli import iteritems, itervalues
[docs]def identity(x):
return x
[docs]def identities(*args):
return args
[docs]def identities_kwargs(**kwargs):
return kwargs
[docs]def identities_args_kwargs(*args, **kwargs):
return args, kwargs
[docs]def identity_values(*args, **kwargs):
return args + tuple(v for v in itervalues(kwargs))
[docs]def negate(x):
return not x
[docs]def first_kwarg(**kwargs):
for k in kwargs:
return kwargs[k]
return None
[docs]def return_values_as_tuple(**kwargs):
return (kwargs[k] for k in kwargs)
[docs]def true(*args, **kwargs):
return True
[docs]def false(*args, **kwargs):
return False
[docs]def yes(*args, **kwargs):
return True
[docs]def no(*args, **kwargs):
return False
[docs]def first_arg(*args):
return args[0]
[docs]def second_arg(*args):
return args[1]
[docs]def third_arg(*args):
return args[2]
[docs]def last_arg(*args):
return args[-1]
[docs]def first(ordered):
return ordered[0]
[docs]def second(ordered):
return ordered[1]
[docs]def third(ordered):
return ordered[2]
[docs]def last(ordered):
return ordered[-1]
[docs]def key(iterable, value=None, sort=False, reverse=False, first=False, position=0):
"""Generic key getter. Returns one or more keys."""
if value is None:
return iterable[position]
else:
r = list(k for (k, v) in iteritems(iterable) if v == value)
if sort:
r = sorted(r, reverse=reverse)
if first:
return r[position]
else:
return r
[docs]def value(iterable, key=None, position=1):
"""Generic value getter. Returns containing value."""
if key is None:
if hasattr(iterable, '__iter__'):
return iterable[position]
else:
return iterable
else:
return iterable[key]