Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/PetterS/quickjs
Thin Python wrapper of https://bellard.org/quickjs/
https://github.com/PetterS/quickjs
javascript python python-library
Last synced: 3 months ago
JSON representation
Thin Python wrapper of https://bellard.org/quickjs/
- Host: GitHub
- URL: https://github.com/PetterS/quickjs
- Owner: PetterS
- License: mit
- Created: 2019-07-15T07:24:26.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-04-12T03:22:45.000Z (7 months ago)
- Last Synced: 2024-07-19T01:01:41.842Z (4 months ago)
- Topics: javascript, python, python-library
- Language: Python
- Homepage: https://github.com/bellard/QuickJS
- Size: 1.15 MB
- Stars: 173
- Watchers: 14
- Forks: 18
- Open Issues: 32
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![CircleCI](https://circleci.com/gh/PetterS/quickjs.svg?style=svg)](https://circleci.com/gh/PetterS/quickjs) [![PyPI version fury.io](https://badge.fury.io/py/quickjs.svg)](https://pypi.python.org/pypi/quickjs/)
Just install with
pip install quickjs
Binaries are provided for:
- 1.19.2 and later: Python 3.7-3.10, 64-bit for Windows, macOS and GNU/Linux.
- 1.18.0-1.19.1: None.
- 1.5.1–1.17.0: Python 3.9, 64-bit for Windows.
- 1.5.0 and earlier: Python 3.7, 64-bit for Windows.# Usage
```python
from quickjs import Functionf = Function("f", """
function adder(a, b) {
return a + b;
}
function f(a, b) {
return adder(a, b);
}
""")assert f(1, 2) == 3
```Simple types like int, floats and strings are converted directly. Other types (dicts, lists) are converted via JSON by the `Function` class.
The library is thread-safe if `Function` is used. If the `Context` class is used directly, it can only ever be accessed by the same thread.
This is true even if the accesses are not concurrent.Both `Function` and `Context` expose `set_memory_limit` and `set_time_limit` functions that allow limits for code running in production.
## API
The `Function` class has, apart from being a callable, additional methods:
- `set_memory_limit`
- `set_time_limit`
- `set_max_stack_size`
- `memory` – returns a dict with information about memory usage.
- `add_callable` – adds a Python function and makes it callable from JS.
- `execute_pending_job` – executes a pending job (such as a async function or Promise).## Documentation
For full functionality, please see `test_quickjs.py`# Developing
This project uses a git submodule for the upstream code, so clone it with the `--recurse-submodules` option or run `git submodule update --init --recursive` afterwards.Use a `poetry shell` and `make test` should work from inside its virtual environment.