diff options
author | Malik Talha <talhamalik727x@gmail.com> | 2023-10-22 21:06:23 +0500 |
---|---|---|
committer | Jan-Simon Moeller <jsmoeller@linuxfoundation.org> | 2023-10-23 14:38:13 +0000 |
commit | 697a1adce1e463079e640b55d6386cf82d7bd6bc (patch) | |
tree | 86e299cc7fe12b10c2e549f640924b61c7d07a95 /snips_inference_agl/common/from_dict.py | |
parent | 97029ab8141e654a170a2282106f854037da294f (diff) |
Add Snips Inference Module
Add slightly modified version of the original Snips NLU
library. This module adds support for Python upto version
3.10.
Bug-AGL: SPEC-4856
Signed-off-by: Malik Talha <talhamalik727x@gmail.com>
Change-Id: I6d7e9eb181e6ff4aed9b6291027877ccb9f0d846
Diffstat (limited to 'snips_inference_agl/common/from_dict.py')
-rw-r--r-- | snips_inference_agl/common/from_dict.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/snips_inference_agl/common/from_dict.py b/snips_inference_agl/common/from_dict.py new file mode 100644 index 0000000..2b776a6 --- /dev/null +++ b/snips_inference_agl/common/from_dict.py @@ -0,0 +1,30 @@ +try: + import funcsigs as inspect +except ImportError: + import inspect + +from future.utils import iteritems + +KEYWORD_KINDS = {inspect.Parameter.POSITIONAL_OR_KEYWORD, + inspect.Parameter.KEYWORD_ONLY} + + +class FromDict(object): + @classmethod + def from_dict(cls, dict): + if dict is None: + return cls() + params = inspect.signature(cls.__init__).parameters + + if any(p.kind == inspect.Parameter.VAR_KEYWORD for p in + params.values()): + return cls(**dict) + + param_names = set() + for i, (name, param) in enumerate(iteritems(params)): + if i == 0 and name == "self": + continue + if param.kind in KEYWORD_KINDS: + param_names.add(name) + filtered_dict = {k: v for k, v in iteritems(dict) if k in param_names} + return cls(**filtered_dict) |