Essentially the py.js version of the Python C API, these functions
are used to implement new py.js types or to interact with existing
ones.
They are prefixed with PY_.
py.PY_parseArgs(arguments, format)
Arguments parser converting from the user-defined calling conventions to a JS object mapping argument names to values. It serves the same role as PyArg_ParseTupleAndKeywords.
var args = py.PY_parseArgs(
arguments, ['foo', 'bar', ['baz', 3], ['qux', "foo"]]);
roughly corresponds to the argument spec:
def func(foo, bar, baz=3, qux="foo"):
pass
Note
a significant difference is that “default values” will be re-evaluated at each call, since they are within the function.
- arguments – array-like objects holding the args and kwargs
passed to the callable, generally the
argumentsof the caller. - format –
mapping declaration to the actual arguments of the function. A javascript array composed of five possible types of elements:
- The literal string
'*'marks all following parameters as keyword-only, regardless of them having a default value or not 1. Can only be present once in the parameters list. - A string prefixed by
*, marks the positional variadic parameter for the function: gathers all provided positional arguments left and makes all following parameters keyword-only 2.*argsis incompatible with*. - A string prefixed with
**, marks the positional keyword variadic parameter for the function: gathers all provided keyword arguments left and closes the argslist. If present, this must be the last parameter of the format list. - A string defines a required parameter, accessible positionally or through keyword
- A pair of
[String, py.object]defines an optional parameter and its default value.
For simplicity, when not using optional parameters it is possible to use a simple string as the format (using space-separated elements). The string will be split on whitespace and processed as a normal format array.
- The literal string
TypeError if the provided arguments don’t match the
formatclass py.PY_def(fn)
Type wrapping javascript functions into py.js callables. The wrapped function follows the py.js calling conventions
Function) – the javascript function to wrapObject Protocol
py.PY_hasAttr(o, attr_name)
Returns true if o has the attribute attr_name,
otherwise returns false. Equivalent to Python’s hasattr(o,
attr_name)
- o – A
py.object - attr_name – a javascript
String
Booleanpy.PY_getAttr(o, attr_name)
Retrieve an attribute attr_name from the object o. Returns
the attribute value on success, raises AttributeError on
failure. Equivalent to the python expression o.attr_name.
py.PY_str(o)
Computes a string representation of o, returns the string
representation. Equivalent to str(o)
py.PY_isInstance(inst, cls)
Returns true if inst is an instance of cls, false
otherwise.
py.PY_isSubclass(derived, cls)
Returns true if derived is cls or a subclass thereof.
py.PY_call(callable[, args][, kwargs])
Call an arbitrary python-level callable from javascript.
py.objectpy.PY_isTrue(o)
Returns true if the object is considered truthy, false
otherwise. Equivalent to bool(o).
py.objectpy.PY_not(o)
Inverse of py.PY_isTrue().
py.PY_size(o)
If o is a sequence or mapping, returns its length. Otherwise,
raises TypeError.
py.PY_getItem(o, key)
Returns the element of o corresponding to the object
key. This is equivalent to o[key].
py.PY_setItem(o, key, v)
Maps the object key to the value v in o. Equivalent to
o[key] = v.
Number Protocol
py.PY_add(o1, o2)
Returns the result of adding o1 and o2, equivalent to
o1 + o2.
py.PY_subtract(o1, o2)
Returns the result of subtracting o2 from o1, equivalent
to o1 - o2.
py.PY_multiply(o1, o2)
Returns the result of multiplying o1 by o2, equivalent to
o1 * o2.
py.PY_divide(o1, o2)
Returns the result of dividing o1 by o2, equivalent to
o1 / o2.
py.PY_negative(o)
Returns the negation of o, equivalent to -o.
py.PY_positive(o)
Returns the “positive” of o, equivalent to +o.
**kwargs to follow *args.