(arg_names, var_arg_names, options_class)
| 273 | |
| 274 | |
| 275 | def _make_signature(arg_names, var_arg_names, options_class): |
| 276 | from inspect import Parameter |
| 277 | params = [] |
| 278 | for name in arg_names: |
| 279 | params.append(Parameter(name, Parameter.POSITIONAL_ONLY)) |
| 280 | for name in var_arg_names: |
| 281 | params.append(Parameter(name, Parameter.VAR_POSITIONAL)) |
| 282 | if options_class is not None: |
| 283 | options_sig = inspect.signature(options_class) |
| 284 | for p in options_sig.parameters.values(): |
| 285 | assert p.kind in (Parameter.POSITIONAL_OR_KEYWORD, |
| 286 | Parameter.KEYWORD_ONLY) |
| 287 | if var_arg_names: |
| 288 | # Cannot have a positional argument after a *args |
| 289 | p = p.replace(kind=Parameter.KEYWORD_ONLY) |
| 290 | params.append(p) |
| 291 | params.append(Parameter("options", Parameter.KEYWORD_ONLY, |
| 292 | default=None)) |
| 293 | params.append(Parameter("memory_pool", Parameter.KEYWORD_ONLY, |
| 294 | default=None)) |
| 295 | return inspect.Signature(params) |
| 296 | |
| 297 | |
| 298 | def _wrap_function(name, func): |
no test coverage detected