# quickjs-cffi
<!--
[![Build][build-image]]()
[![Status][status-image]][pypi-project-url]
[![Stable Version][stable-ver-image]][pypi-project-url]
[![Coverage][coverage-image]]()
[![Python][python-ver-image]][pypi-project-url]
[![License][mit-image]][mit-url]
-->
[](https://pypi.org/project/quickjs-cffi/)
[](https://pypi.org/project/quickjs-cffi)
[](https://pypistats.org/packages/quickjs-cffi)
[]()
[](https://opensource.org/licenses/MIT)
**Python** binding for [QuickJS Javascript Engine](https://bellard.org/quickjs/) using **cffi**. Supports **x86_64** and **aarch64** platforms.
NOTE: Currently supported operating system is Linux (`manylinux_2_28` and `musllinux_1_2`)
## Install
```bash
pip install quickjs-cffi
```
## Features
- ✅ Use **npm** to install packages and use them directly
- ✅ In case you need to use complex **ECMAScript** or **TypeScript** modules/libraries/packages see [Yjs](https://github.com/yjs/yjs) example below how to use [esbuild](https://esbuild.github.io/) to transpile their code to [QuickJS](https://bellard.org/quickjs/) compatible ECMAScript modules
- ✅ Import remote and local ECMAScript scripts/modules
- ✅ Define Python objects and pass them to JavaScript
- ✅ Define JavaScript objects and pass them to Python
- ✅ Python objects live in Python environment
- ✅ JavaScript objects live in JavaScript environment
- ✅ Freely use Python objects in JavaScript
- ✅ Freely use JavaScript objects in Python
## Usage
```python
from quickjs import JSEval, JSRuntime, JSContext, JSError
# create runtime and context
rt = JSRuntime()
ctx: JSContext = rt.new_context()
# load lodash from remote location
# it also accepts local JavaScript files
ctx.load('https://raw.githubusercontent.com/lodash/lodash/refs/heads/main/dist/lodash.min.js')
lodash: JSValue = ctx['_']
# call lodash.range to create array JavaScript side
# and return its handler to Python side
r: JSValue = lodash.range(10, 100, 10)
# on Python side, define JavaScript function
# and use it to filter JavaScript array
f0: JSValue = ctx.eval('n => n >= 50')
r: JSValue = lodash.filter(lodash.range(10, 100, 10), f0)
# on Python side, define Python function
# and use on JavaScript side to filter array
def f1(n, *args):
return n >= 50
r: JSValue = lodash.filter(lodash.range(10, 100, 10), f1)
# on Python side, define Python lambda function
# and use on JavaScript side to filter array
f2 = lambda n, *args: n >= 50 # noqa
r: JSValue = lodash.filter(lodash.range(10, 100, 10), f2)
# on Python side, define pass inplace Python lambda function
# and use on JavaScript side to filter array
r: JSValue = lodash.filter(lodash.range(10, 100, 10), lambda n, *args: n >= 50)
# on Python side, define Python lambda function
# then set it as global function in JavaScript
# and use it on JavaScript side to filter array
ctx['f3'] = lambda n, *args: n >= 50
r: JSValue = lodash.filter(lodash.range(10, 100, 10), ctx.eval('f3'))
```
## Build
```bash
python -m venv venv
source venv/bin/activate
pip install poetry
poetry install --all-extras
```
## Demos
First setup temp node project, so node modules can be installed and used inside QuickJS examples:
```bash
npm init -y
npm install esbuild
```
Huge number of isoloted JavaScript contexts:
```bash
python -B examples/demo_contexts.py
```
Lodash example:
```bash
npm install lodash
python -B examples/demo_lodash.py
```
Handlebas example:
```bash
npm install handlebars
python -B examples/demo_handlebars.py
```
Yjs example:
```bash
npm install yjs
esbuild node_modules/yjs/src/index.js --bundle --outfile=examples/yjs.js --format=iife --loader:.ts=ts --global-name="Y"
python -B examples/demo_yjs.py
```
Raw data
{
"_id": null,
"home_page": "https://github.com/tangledgroup/quickjs-cffi",
"name": "quickjs-cffi",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.10",
"maintainer_email": null,
"keywords": null,
"author": "Marko Tasic",
"author_email": "mtasic85@gmail.com",
"download_url": null,
"platform": null,
"description": "# quickjs-cffi\n\n<!--\n[![Build][build-image]]()\n[![Status][status-image]][pypi-project-url]\n[![Stable Version][stable-ver-image]][pypi-project-url]\n[![Coverage][coverage-image]]()\n[![Python][python-ver-image]][pypi-project-url]\n[![License][mit-image]][mit-url]\n-->\n[](https://pypi.org/project/quickjs-cffi/)\n[](https://pypi.org/project/quickjs-cffi)\n[](https://pypistats.org/packages/quickjs-cffi)\n[]()\n[](https://opensource.org/licenses/MIT)\n\n**Python** binding for [QuickJS Javascript Engine](https://bellard.org/quickjs/) using **cffi**. Supports **x86_64** and **aarch64** platforms.\n\nNOTE: Currently supported operating system is Linux (`manylinux_2_28` and `musllinux_1_2`)\n\n## Install\n\n```bash\npip install quickjs-cffi\n```\n\n## Features\n\n- \u2705 Use **npm** to install packages and use them directly\n- \u2705 In case you need to use complex **ECMAScript** or **TypeScript** modules/libraries/packages see [Yjs](https://github.com/yjs/yjs) example below how to use [esbuild](https://esbuild.github.io/) to transpile their code to [QuickJS](https://bellard.org/quickjs/) compatible ECMAScript modules\n- \u2705 Import remote and local ECMAScript scripts/modules\n- \u2705 Define Python objects and pass them to JavaScript\n- \u2705 Define JavaScript objects and pass them to Python\n- \u2705 Python objects live in Python environment\n- \u2705 JavaScript objects live in JavaScript environment\n- \u2705 Freely use Python objects in JavaScript\n- \u2705 Freely use JavaScript objects in Python\n\n\n## Usage\n\n```python\nfrom quickjs import JSEval, JSRuntime, JSContext, JSError\n\n# create runtime and context\nrt = JSRuntime()\nctx: JSContext = rt.new_context()\n\n# load lodash from remote location\n# it also accepts local JavaScript files\nctx.load('https://raw.githubusercontent.com/lodash/lodash/refs/heads/main/dist/lodash.min.js')\nlodash: JSValue = ctx['_']\n\n# call lodash.range to create array JavaScript side\n# and return its handler to Python side\nr: JSValue = lodash.range(10, 100, 10)\n\n# on Python side, define JavaScript function\n# and use it to filter JavaScript array\nf0: JSValue = ctx.eval('n => n >= 50')\nr: JSValue = lodash.filter(lodash.range(10, 100, 10), f0)\n\n# on Python side, define Python function\n# and use on JavaScript side to filter array\ndef f1(n, *args):\n return n >= 50\n\nr: JSValue = lodash.filter(lodash.range(10, 100, 10), f1)\n\n# on Python side, define Python lambda function\n# and use on JavaScript side to filter array\nf2 = lambda n, *args: n >= 50 # noqa\nr: JSValue = lodash.filter(lodash.range(10, 100, 10), f2)\n\n# on Python side, define pass inplace Python lambda function\n# and use on JavaScript side to filter array\nr: JSValue = lodash.filter(lodash.range(10, 100, 10), lambda n, *args: n >= 50)\n\n# on Python side, define Python lambda function\n# then set it as global function in JavaScript\n# and use it on JavaScript side to filter array\nctx['f3'] = lambda n, *args: n >= 50\nr: JSValue = lodash.filter(lodash.range(10, 100, 10), ctx.eval('f3'))\n```\n\n## Build\n\n```bash\npython -m venv venv\nsource venv/bin/activate\npip install poetry\npoetry install --all-extras\n```\n\n## Demos\n\nFirst setup temp node project, so node modules can be installed and used inside QuickJS examples:\n\n```bash\nnpm init -y\nnpm install esbuild\n```\n\nHuge number of isoloted JavaScript contexts:\n\n```bash\npython -B examples/demo_contexts.py\n```\n\nLodash example:\n\n```bash\nnpm install lodash\npython -B examples/demo_lodash.py\n```\n\nHandlebas example:\n\n```bash\nnpm install handlebars\npython -B examples/demo_handlebars.py\n```\n\nYjs example:\n\n```bash\nnpm install yjs\nesbuild node_modules/yjs/src/index.js --bundle --outfile=examples/yjs.js --format=iife --loader:.ts=ts --global-name=\"Y\"\npython -B examples/demo_yjs.py\n```\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python binding for QuickJS using CFFI",
"version": "0.1.3",
"project_urls": {
"Homepage": "https://github.com/tangledgroup/quickjs-cffi",
"Repository": "https://github.com/tangledgroup/quickjs-cffi"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "990649811f019cf923363e842d052dab362ade95b6be32045ca77fc6df26d7ca",
"md5": "c90f7725a2d6dfeab26faf468bb3b7c6",
"sha256": "caec37e2d8059f2896eb07e78f8d044d27fb8b3d658514334bbd0c66f69c927d"
},
"downloads": -1,
"filename": "quickjs_cffi-0.1.3-cp310-cp310-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "c90f7725a2d6dfeab26faf468bb3b7c6",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<4.0,>=3.10",
"size": 2158444,
"upload_time": "2024-11-28T13:13:35",
"upload_time_iso_8601": "2024-11-28T13:13:35.993361Z",
"url": "https://files.pythonhosted.org/packages/99/06/49811f019cf923363e842d052dab362ade95b6be32045ca77fc6df26d7ca/quickjs_cffi-0.1.3-cp310-cp310-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3e042fbb96c30c81489a50c7079335c15a40c30ffb6d8bf1250078c0fe4894b3",
"md5": "48eb13cf9a279e484343345109411b5f",
"sha256": "66b8ed319b6df71475ae925d9b963c2bcbd35851936d93f2e806a36d6bf51eff"
},
"downloads": -1,
"filename": "quickjs_cffi-0.1.3-cp310-cp310-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "48eb13cf9a279e484343345109411b5f",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<4.0,>=3.10",
"size": 2194667,
"upload_time": "2024-11-28T13:13:37",
"upload_time_iso_8601": "2024-11-28T13:13:37.904500Z",
"url": "https://files.pythonhosted.org/packages/3e/04/2fbb96c30c81489a50c7079335c15a40c30ffb6d8bf1250078c0fe4894b3/quickjs_cffi-0.1.3-cp310-cp310-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a219067e6f3f1bf8a2057771a0b097078c89a3d7e4c5e5bacee776d601ed7cee",
"md5": "c590759027b62ffde96d489a8e48ce16",
"sha256": "9dca0831aeb86ae3e5b18b2231aca36262f4eabf7bef88f044fee724e46a50a5"
},
"downloads": -1,
"filename": "quickjs_cffi-0.1.3-cp310-cp310-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "c590759027b62ffde96d489a8e48ce16",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<4.0,>=3.10",
"size": 2076494,
"upload_time": "2024-11-28T13:13:39",
"upload_time_iso_8601": "2024-11-28T13:13:39.826351Z",
"url": "https://files.pythonhosted.org/packages/a2/19/067e6f3f1bf8a2057771a0b097078c89a3d7e4c5e5bacee776d601ed7cee/quickjs_cffi-0.1.3-cp310-cp310-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c00b64b56cb22d13b54b0401523ce2fb35f1920f1e7fc342fda3f2b28533e1cb",
"md5": "e6cbe192b9f31a9d371c628faf6b34ab",
"sha256": "d31c114951973d4d5f31ef46658b4451564af2cd4573caf3588d19f79336047e"
},
"downloads": -1,
"filename": "quickjs_cffi-0.1.3-cp310-cp310-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "e6cbe192b9f31a9d371c628faf6b34ab",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<4.0,>=3.10",
"size": 2137200,
"upload_time": "2024-11-28T13:13:42",
"upload_time_iso_8601": "2024-11-28T13:13:42.298194Z",
"url": "https://files.pythonhosted.org/packages/c0/0b/64b56cb22d13b54b0401523ce2fb35f1920f1e7fc342fda3f2b28533e1cb/quickjs_cffi-0.1.3-cp310-cp310-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bb9a2a3f9b96a41d40de9fca543912a23a75d54a846f4c80d71e1a379544550e",
"md5": "3eb95c27c3e0d3bc25b9c0fe19d671b0",
"sha256": "01077959d7302ec538fdf35169186fc33b40c8fa08f2fb02803ba8a221dffd86"
},
"downloads": -1,
"filename": "quickjs_cffi-0.1.3-cp311-cp311-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "3eb95c27c3e0d3bc25b9c0fe19d671b0",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<4.0,>=3.10",
"size": 2158417,
"upload_time": "2024-11-28T13:13:44",
"upload_time_iso_8601": "2024-11-28T13:13:44.655163Z",
"url": "https://files.pythonhosted.org/packages/bb/9a/2a3f9b96a41d40de9fca543912a23a75d54a846f4c80d71e1a379544550e/quickjs_cffi-0.1.3-cp311-cp311-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b5c25d9cab6be4bc86b16882ba6a947bd94f936a0f74249bd9f868775f25c778",
"md5": "c0d061ede3d563feb3ca3d5a9caaf69d",
"sha256": "2084e3f051c4da5cc2e2d46eda05a1082b279906bf1eaed707d4e08f320250a2"
},
"downloads": -1,
"filename": "quickjs_cffi-0.1.3-cp311-cp311-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "c0d061ede3d563feb3ca3d5a9caaf69d",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<4.0,>=3.10",
"size": 2194654,
"upload_time": "2024-11-28T13:13:47",
"upload_time_iso_8601": "2024-11-28T13:13:47.439056Z",
"url": "https://files.pythonhosted.org/packages/b5/c2/5d9cab6be4bc86b16882ba6a947bd94f936a0f74249bd9f868775f25c778/quickjs_cffi-0.1.3-cp311-cp311-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "46fa2a1388565e3c9ee0b888b5470a92f09d3e257d4f767804e149d7e2c4d512",
"md5": "f2e2e032282a644e98cbdd156a4fde08",
"sha256": "2d37bc49b09596d969bc0d76beb4b64dc8d57e7f696da916744a54ee3478b4f7"
},
"downloads": -1,
"filename": "quickjs_cffi-0.1.3-cp311-cp311-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "f2e2e032282a644e98cbdd156a4fde08",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<4.0,>=3.10",
"size": 2076563,
"upload_time": "2024-11-28T13:13:49",
"upload_time_iso_8601": "2024-11-28T13:13:49.019115Z",
"url": "https://files.pythonhosted.org/packages/46/fa/2a1388565e3c9ee0b888b5470a92f09d3e257d4f767804e149d7e2c4d512/quickjs_cffi-0.1.3-cp311-cp311-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2c29cc7e0cd3c38a0a1b07c7e52c791d67343d7bc5e0058f3a8da7703f6d399c",
"md5": "db304b876159ddfbe374179af9cdb855",
"sha256": "a94c98cc4e9d6425bb0e9419d4d39f0127eab95a548ddd538bf1ad6feebf0e27"
},
"downloads": -1,
"filename": "quickjs_cffi-0.1.3-cp311-cp311-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "db304b876159ddfbe374179af9cdb855",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<4.0,>=3.10",
"size": 2137199,
"upload_time": "2024-11-28T13:13:50",
"upload_time_iso_8601": "2024-11-28T13:13:50.637813Z",
"url": "https://files.pythonhosted.org/packages/2c/29/cc7e0cd3c38a0a1b07c7e52c791d67343d7bc5e0058f3a8da7703f6d399c/quickjs_cffi-0.1.3-cp311-cp311-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c9bca2b085280847cbc06d82f25c4e09db46fa8dbe3867c13f83e963894d3e63",
"md5": "e778741d79f8693ed6cfdc6696b849fa",
"sha256": "d6a4462d091936ff5296cf6de179a1c3e01c9cead18ae17b9de99d6cdee1d131"
},
"downloads": -1,
"filename": "quickjs_cffi-0.1.3-cp312-cp312-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "e778741d79f8693ed6cfdc6696b849fa",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4.0,>=3.10",
"size": 2159582,
"upload_time": "2024-11-28T13:13:52",
"upload_time_iso_8601": "2024-11-28T13:13:52.315574Z",
"url": "https://files.pythonhosted.org/packages/c9/bc/a2b085280847cbc06d82f25c4e09db46fa8dbe3867c13f83e963894d3e63/quickjs_cffi-0.1.3-cp312-cp312-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5cb9a1b58cc70e8cd86012830919f339e6483d33a905947e954ad09fe1047b41",
"md5": "3c55d5d19c818380297d8caa4746a9cd",
"sha256": "bc239d1e40a7a6e9721340aa95b660c0cdf26bffab1c59444165299611915c4c"
},
"downloads": -1,
"filename": "quickjs_cffi-0.1.3-cp312-cp312-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "3c55d5d19c818380297d8caa4746a9cd",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4.0,>=3.10",
"size": 2197524,
"upload_time": "2024-11-28T13:13:53",
"upload_time_iso_8601": "2024-11-28T13:13:53.917337Z",
"url": "https://files.pythonhosted.org/packages/5c/b9/a1b58cc70e8cd86012830919f339e6483d33a905947e954ad09fe1047b41/quickjs_cffi-0.1.3-cp312-cp312-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "933e38fc5befa1e1e87d06c2b6ef34975c92107efef550f18239d3df4101549a",
"md5": "b517a376280db4f91f08f5890fd68fd0",
"sha256": "e8c3da920d39a521a85165eb8f6de6fb1fcb53e70ef7cec3c385a5968295fa40"
},
"downloads": -1,
"filename": "quickjs_cffi-0.1.3-cp312-cp312-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "b517a376280db4f91f08f5890fd68fd0",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4.0,>=3.10",
"size": 2077512,
"upload_time": "2024-11-28T13:13:55",
"upload_time_iso_8601": "2024-11-28T13:13:55.447082Z",
"url": "https://files.pythonhosted.org/packages/93/3e/38fc5befa1e1e87d06c2b6ef34975c92107efef550f18239d3df4101549a/quickjs_cffi-0.1.3-cp312-cp312-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fd83e4af7e43411b35a9cbf3fb623661f9f172f064a78a1c49fc15c45c455d26",
"md5": "1ff2ab10f05453f82d872bd6d2eb9c8a",
"sha256": "a1c88946f620205380f47d9ce6efe89804bdbf3653f9d878ad587e1ec30b24c0"
},
"downloads": -1,
"filename": "quickjs_cffi-0.1.3-cp312-cp312-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "1ff2ab10f05453f82d872bd6d2eb9c8a",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4.0,>=3.10",
"size": 2139236,
"upload_time": "2024-11-28T13:13:57",
"upload_time_iso_8601": "2024-11-28T13:13:57.952522Z",
"url": "https://files.pythonhosted.org/packages/fd/83/e4af7e43411b35a9cbf3fb623661f9f172f064a78a1c49fc15c45c455d26/quickjs_cffi-0.1.3-cp312-cp312-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "69a6b3bdf2a6c0964c9fb2abd795823ea78358db61811adb69894fc458076a14",
"md5": "237726edfaded8d32aee64576657e940",
"sha256": "8cfb30b7d7643ba0b9c612f774c7b8805936e0594c9b931855384d79138e24bc"
},
"downloads": -1,
"filename": "quickjs_cffi-0.1.3-cp313-cp313-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "237726edfaded8d32aee64576657e940",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "<4.0,>=3.10",
"size": 2159551,
"upload_time": "2024-11-28T13:14:00",
"upload_time_iso_8601": "2024-11-28T13:14:00.496689Z",
"url": "https://files.pythonhosted.org/packages/69/a6/b3bdf2a6c0964c9fb2abd795823ea78358db61811adb69894fc458076a14/quickjs_cffi-0.1.3-cp313-cp313-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "209a7c853b9820b761304444501cc404a2b8ec01d36a50eb8481dfd564476698",
"md5": "38c508e507b7fe190ea37cbdee4abc37",
"sha256": "50c8b59d6096f06594128d3ece82e3168e03376cec4a68de0a8f51baedab546b"
},
"downloads": -1,
"filename": "quickjs_cffi-0.1.3-cp313-cp313-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "38c508e507b7fe190ea37cbdee4abc37",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "<4.0,>=3.10",
"size": 2197525,
"upload_time": "2024-11-28T13:14:03",
"upload_time_iso_8601": "2024-11-28T13:14:03.038186Z",
"url": "https://files.pythonhosted.org/packages/20/9a/7c853b9820b761304444501cc404a2b8ec01d36a50eb8481dfd564476698/quickjs_cffi-0.1.3-cp313-cp313-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ea109ae400062fa58b818c236a1b34cfb03f0af1d42c840ce078781f7e9a702d",
"md5": "5d1a65af91c5f1c155f56ee3cd25c602",
"sha256": "afaac20d6816ccdde714f2f7a096633b4e0e43a16b6dcf8dd59d6c8fef0fc4fa"
},
"downloads": -1,
"filename": "quickjs_cffi-0.1.3-cp313-cp313-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "5d1a65af91c5f1c155f56ee3cd25c602",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "<4.0,>=3.10",
"size": 2077562,
"upload_time": "2024-11-28T13:14:05",
"upload_time_iso_8601": "2024-11-28T13:14:05.569669Z",
"url": "https://files.pythonhosted.org/packages/ea/10/9ae400062fa58b818c236a1b34cfb03f0af1d42c840ce078781f7e9a702d/quickjs_cffi-0.1.3-cp313-cp313-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f94324a5bf732404601be8a0f6c80097ade0fd3e09e6518564a577025ebef6a3",
"md5": "afe9adfb112db0726a8656b81bf6a699",
"sha256": "c863c072d85b712051ab98603215e0cf1e54e045c8fc1a47d9bafc21b739f56e"
},
"downloads": -1,
"filename": "quickjs_cffi-0.1.3-cp313-cp313-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "afe9adfb112db0726a8656b81bf6a699",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "<4.0,>=3.10",
"size": 2139272,
"upload_time": "2024-11-28T13:14:07",
"upload_time_iso_8601": "2024-11-28T13:14:07.245734Z",
"url": "https://files.pythonhosted.org/packages/f9/43/24a5bf732404601be8a0f6c80097ade0fd3e09e6518564a577025ebef6a3/quickjs_cffi-0.1.3-cp313-cp313-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1fd20348e95e3653c0b1aa3e3e385461b3a8d4f58a00e95e2c88280ff4663d93",
"md5": "0fcb7a78bc5e145dc5ee07c4de502301",
"sha256": "263cf3f62fb055b3a9266d95768b628fc09de96c46fb2cba72f138c33ef5c768"
},
"downloads": -1,
"filename": "quickjs_cffi-0.1.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "0fcb7a78bc5e145dc5ee07c4de502301",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": "<4.0,>=3.10",
"size": 1938082,
"upload_time": "2024-11-28T13:14:08",
"upload_time_iso_8601": "2024-11-28T13:14:08.857736Z",
"url": "https://files.pythonhosted.org/packages/1f/d2/0348e95e3653c0b1aa3e3e385461b3a8d4f58a00e95e2c88280ff4663d93/quickjs_cffi-0.1.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "64f27fe57f7e891075caf0087bb135e8eab4ed3e78ccaf20d092bc6558110864",
"md5": "9cf7101aaf518435846c220159ee730b",
"sha256": "f85a44a638b8db4b0bd8ef1a0bf25965cd14d8a6bf94eddc40d4cd686f68a151"
},
"downloads": -1,
"filename": "quickjs_cffi-0.1.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "9cf7101aaf518435846c220159ee730b",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": "<4.0,>=3.10",
"size": 1963668,
"upload_time": "2024-11-28T13:14:10",
"upload_time_iso_8601": "2024-11-28T13:14:10.511321Z",
"url": "https://files.pythonhosted.org/packages/64/f2/7fe57f7e891075caf0087bb135e8eab4ed3e78ccaf20d092bc6558110864/quickjs_cffi-0.1.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-28 13:13:35",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "tangledgroup",
"github_project": "quickjs-cffi",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "quickjs-cffi"
}