Python: Fix positional argument mismatch for invoking native functions. (#4495)

### Motivation and Context

Fixes #4483. Invoking native functions doesn't require 3 params, but
rather 2.

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

### Description

Specify the coroutine for a native function to only take the context,
unlike the semantic invoke that takes context and settings. Black
formatting Jupyter notebooks.

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [X] The code builds clean without any errors or warnings
- [X] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [X] All unit tests pass, and I have added new tests where possible
- [X] I didn't break anyone 😄

---------

Co-authored-by: Evan Mattson <[email protected]>
This commit is contained in:
Evan Mattson
2024-01-09 17:46:05 +00:00
committed by GitHub
co-authored by Evan Mattson
parent ec5be3ebbd
commit eaec3d349d
7 changed files with 275 additions and 283 deletions
@@ -372,8 +372,14 @@ class SKFunction(SKFunctionBase):
loop = None
if loop and loop.is_running():
coroutine_function = self._invoke_semantic_async if self.is_semantic else self._invoke_native_async
return self.run_async_in_executor(lambda: coroutine_function(context, settings))
def run_coroutine():
if self.is_semantic:
return self._invoke_semantic_async(context, settings)
else:
return self._invoke_native_async(context)
return self.run_async_in_executor(run_coroutine)
else:
if self.is_semantic:
return asyncio.run(self._invoke_semantic_async(context, settings))