mirror of https://github.com/chriskiehl/Gooey.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.2 KiB
58 lines
1.2 KiB
from functools import reduce
|
|
from inspect import signature
|
|
|
|
|
|
|
|
def apply_transforms(data, func):
|
|
return func(data)
|
|
|
|
|
|
def bootlegCurry(f):
|
|
'''
|
|
a bootleg curry.
|
|
'''
|
|
def _curry(f, remaining):
|
|
def inner(*args):
|
|
if len(args) >= remaining:
|
|
return f(*args)
|
|
else:
|
|
newfunc = lambda *rem: f(*args, *rem)
|
|
return _curry(newfunc, remaining - len(args))
|
|
return inner
|
|
return _curry(f, len(signature(f).parameters))
|
|
|
|
|
|
def excluding(item_dict, *to_exclude):
|
|
excluded = set(to_exclude)
|
|
return {key: val for key, val in item_dict.items()
|
|
if key not in excluded}
|
|
|
|
|
|
def indentity(x):
|
|
return x
|
|
|
|
|
|
def merge(*args):
|
|
return reduce(lambda acc, val: acc.update(val) or acc, args, {})
|
|
|
|
|
|
def partition_by(f, coll):
|
|
a = []
|
|
b = []
|
|
for item in coll:
|
|
bucket = a if f(item) else b
|
|
bucket.append(item)
|
|
return a, b
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
pass
|
|
# a = {
|
|
# 'a': 111,
|
|
# 'b': 111,
|
|
# 'c': 111,
|
|
# 1: 111
|
|
# }
|
|
# print(excluding(a, 'a', 'c', 1))
|