API Reference

pyodide version 0.1.0

Backward compatibility of the API is not guaranteed at this point.

Python API

pyodide.open_url(url)

Fetches a given url and returns a io.StringIO to access its contents.

Parameters

| name | type | description | |——-|——|—————–| | url | str | the URL to open |

Returns

A io.StringIO object with the URL contents./

pyodide.eval_code(code, ns)

Runs a string of code. The last part of the string may be an expression, in which case, its value is returned.

This function may be overridden to change how pyodide.runPython interprets code, for example to perform some preprocessing on the Python code first.

Parameters

| name | type | description | |——–|——-|———————–| | code | str | the code to evaluate | | ns | dict | evaluation name space |

Returns

Either the resulting object or None.

pyodide.as_nested_list(obj)

Converts Javascript nested arrays to Python nested lists. This conversion can not be performed automatically, because Javascript Arrays and Objects can be combined in ways that are ambiguous.

Parameters

| name | type | description | |——–|——-|———————–| | obj | JS Object | The object to convert |

Returns

The object as nested Python lists.

Javascript API

pyodide.loadPackage(names, messageCallback, errorCallback)

Load a package or a list of packages over the network.

This makes the files for the package available in the virtual filesystem. The package needs to be imported from Python before it can be used.

Parameters

| name | type | description | |——————-|—————–|—————————————| | names | {String, Array} | package name, or URL. Can be either a single element, or an array. | | messageCallback | function | A callback, called with progress messages. (optional) | | errorCallback | function | A callback, called with error/warning messages. (optional) |

Returns

Loading is asynchronous, therefore, this returns a Promise.

pyodide.loadedPackages

Object with loaded packages.

Use Object.keys(pyodide.loadedPackages) to access the names of the loaded packages, and pyodide.loadedPackages[package_name] to access install location for a particular package_name.

pyodide.pyimport(name)

Access a Python object from Javascript. The object must be in the global Python namespace.

For example, to access the foo Python object from Javascript:

var foo = pyodide.pyimport('foo')

Parameters

| name | type | description | |———|——–|———————-| | names | String | Python variable name |

Returns

| name | type | description | |———–|———|—————————————| | object | any | If one of the basic types (string, | | | | number, boolean, array, object), the | | | | Python object is converted to | | | | Javascript and returned. For other | | | | types, a Proxy object to the Python | | | | object is returned. |

pyodide.globals

An object whose attributes are members of the Python global namespace. This is a more convenient alternative to pyodide.pyimport.

For example, to access the foo Python object from Javascript:

pyodide.globals.foo

pyodide.repr(obj)

Gets the Python’s string representation of an object.

This is equivalent to calling repr(obj) in Python.

Parameters

| name | type | description | |———|——–|———————| | obj | any | Input object |

Returns

| name | type | description | |————|———|——————————————-| | str_repr | String | String representation of the input object |

pyodide.runPython(code)

Runs a string of code. The last part of the string may be an expression, in which case, its value is returned.

Parameters

| name | type | description | |———|——–|——————————–| | code | String | Python code to evaluate |

Returns

| name | type | description | |————|———|———————————| | jsresult | any | Result, converted to Javascript |

pyodide.runPythonAsync(code, messageCallback, errorCallback)

Runs Python code, possibly asynchronously loading any known packages that the code chunk imports.

For example, given the following code chunk

import numpy as np
x = np.array([1, 2, 3])

pyodide will first call pyodide.loadPackage(['numpy']), and then run the code chunk, returning the result. Since package fetching must happen asynchronously, this function returns a Promise which resolves to the output. For example, to use:

pyodide.runPythonAsync(code, messageCallback)
  .then((output) => handleOutput(output))

Parameters

| name | type | description | |——————-|———-|——————————–| | code | String | Python code to evaluate | | messageCallback | function | A callback, called with progress messages. (optional) | | errorCallback | function | A callback, called with error/warning messages. (optional) |

Returns

| name | type | description | |————|———|——————————————| | result | Promise | Resolves to the result of the code chunk |

pyodide.version()

Returns the pyodide version.

It can be either the exact release version (e.g. 0.1.0), or the latest release version followed by the number of commits since, and the git hash of the current commit (e.g. 0.1.0-1-bd84646).

Parameters

None

Returns

| name | type | description | |———–|——–|————————| | version | String | Pyodide version string |