feat(python): add support for extra args in python

This commit is contained in:
Ruben Fiszel
2023-01-31 09:52:29 +01:00
parent 8aab9a2a92
commit 90324fb557
2 changed files with 13 additions and 2 deletions
@@ -80,7 +80,7 @@ pub fn parse_python_signature(code: &str) -> error::Result<MainArgSignature> {
let def_arg_start = params.args.len() - params.defaults.len();
Ok(MainArgSignature {
star_args: params.vararg.is_some(),
star_kwargs: params.vararg.is_some(),
star_kwargs: params.kwarg.is_some(),
args: params
.args
.into_iter()
+12 -1
View File
@@ -1740,6 +1740,15 @@ async fn handle_python_job(
} else {
""
};
let spread = if sig.star_kwargs {
"args = kwargs".to_string()
} else {
sig.args
.into_iter()
.map(|x| format!("args[\"{}\"] = kwargs[\"{}\"]", x.name, x.name))
.join("\n")
};
let wrapper_content: String = format!(
r#"
import json
@@ -1756,9 +1765,11 @@ with open("args.json") as f:
for k, v in list(kwargs.items()):
if v == '<function call>':
del kwargs[k]
args = {{}}
{spread}
{transforms}
try:
res = inner_script.main(**kwargs)
res = inner_script.main(**args)
res_json = json.dumps(res, separators=(',', ':'), default=str).replace('\n', '')
with open("result.json", 'w') as f:
f.write(res_json)