Source code for tocoli.fn

#!/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]