Misc Helpers

int HPyHelpers_AddType(HPyContext *ctx, HPy obj, const char *name, HPyType_Spec *hpyspec, HPyType_SpecParam *params)
[source]

Create a type and add it as an attribute on the given object. The type is created using HPyType_FromSpec(). The object is often a module that the type is being added to.

Parameters
  • ctx – The execution context.

  • obj – A handle to the object the type is being added to (often a module).

  • name – The name of the attribute on the object to assign the type to.

  • hpyspec – The type spec to use to create the type.

  • params – The type spec parameters to use to create the type.

Returns

0 on failure, 1 on success.

Examples:

Using HPyHelpers_AddType without any HPyType_SpecParam parameters:

if (!HPyHelpers_AddType(ctx, module, "MyType", hpyspec, NULL))
    return HPy_NULL;
...

Using HPyHelpers_AddType with HPyType_SpecParam parameters:

HPyType_SpecParam params[] = {
    { HPyType_SpecParam_Base, ctx->h_LongType },
    { 0 }
};

if (!HPyHelpers_AddType(ctx, module, "MyType", hpyspec, params))
    return HPy_NULL;
...
int HPyHelpers_PackArgsAndKeywords(HPyContext *ctx, const HPy *args, size_t nargs, HPy kwnames, HPy *out_pos_args, HPy *out_kwd)
[source]

Convert positional/keyword argument vector to argument tuple and keywords dictionary.

This helper function is useful to convert arguments from HPy’s calling convention to the legacy CPython tp_call calling convention. HPy’s calling convention is similar to CPython’s fastcall/vectorcall calling convention where positional and keyword arguments are passed as a C array, the number of positional arguments is explicitly given by an argument and the names of the keyword arguments are provided in a tuple.

For an example on how to use this function, see section Incremental Migration to HPy’s Calling Protocol.

Parameters
  • ctx – The execution context.

  • args – A pointer to an array of positional and keyword arguments. This argument must not be NULL if nargs > 0 or HPy_Length(ctx, kwnames) > 0.

  • nargs – The number of positional arguments in args.

  • kwnames – A handle to the tuple of keyword argument names (may be HPy_NULL). The values of the keyword arguments are also passed in args appended to the positional arguments. Argument nargs does not include the keyword argument count.

  • out_pos_args – A pointer to a variable where to write the created positional arguments tuple to. If there are no positional arguments (i.e. nargs == 0), then HPy_NULL will be written. The pointer will not be used if any error occurs during conversion.

  • out_kwd – A pointer to a variable where to write the created keyword arguments dictionary to. If there are not keyword arguments (i.e. HPy_Length(ctx, kwnames) == 0), then HPy_NULL will be written. The pointer will not be used if any error occurs during conversion.

Returns

0 on failure, 1 on success.