call_with_supported_arguments() util, refs #581

This commit is contained in:
Simon Willison 2020-05-27 12:25:52 -07:00
commit 41a0cd7b6a
2 changed files with 22 additions and 0 deletions

View file

@ -3,6 +3,7 @@ from collections import OrderedDict
import base64
import click
import hashlib
import inspect
import json
import mergedeep
import os
@ -803,3 +804,13 @@ def parse_metadata(content):
return yaml.safe_load(content)
except yaml.YAMLError:
raise BadMetadataError("Metadata is not valid JSON or YAML")
def call_with_supported_arguments(fn, **kwargs):
parameters = inspect.signature(fn).parameters.keys()
call_with = []
for parameter in parameters:
if parameter not in kwargs:
raise TypeError("{} requires parameters {}".format(fn, tuple(parameters)))
call_with.append(kwargs[parameter])
return fn(*call_with)