{"id":13501486,"url":"https://github.com/ethereum/py-wasm","last_synced_at":"2025-10-07T11:30:55.235Z","repository":{"id":65984435,"uuid":"161232280","full_name":"ethereum/py-wasm","owner":"ethereum","description":"A python implementation of the web assembly interpreter","archived":false,"fork":false,"pushed_at":"2023-02-17T18:50:24.000Z","size":1568,"stargazers_count":105,"open_issues_count":18,"forks_count":22,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-01-15T15:49:28.380Z","etag":null,"topics":["python","wasm"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"ncsa","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ethereum.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2018-12-10T20:25:19.000Z","updated_at":"2024-11-02T13:49:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"45a2cb71-7168-4149-b2fd-c27227c4abad","html_url":"https://github.com/ethereum/py-wasm","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fpy-wasm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fpy-wasm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fpy-wasm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fpy-wasm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ethereum","download_url":"https://codeload.github.com/ethereum/py-wasm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235621547,"owners_count":19019520,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["python","wasm"],"created_at":"2024-07-31T22:01:39.145Z","updated_at":"2025-10-07T11:30:49.062Z","avatar_url":"https://github.com/ethereum.png","language":"Python","funding_links":[],"categories":["Python","Non-Web Embeddings","Runtimes"],"sub_categories":["**Python**"],"readme":"# py-wasm\n\n[![Join the chat at https://gitter.im/ethereum/py-wasm](https://badges.gitter.im/ethereum/py-wasm.svg)](https://gitter.im/ethereum/py-wasm?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n[![Build Status](https://circleci.com/gh/ethereum/py-wasm.svg?style=shield)](https://circleci.com/gh/ethereum/py-wasm)\n[![PyPI version](https://badge.fury.io/py/py-wasm.svg)](https://badge.fury.io/py/py-wasm)\n[![Python versions](https://img.shields.io/pypi/pyversions/py-wasm.svg)](https://pypi.python.org/pypi/py-wasm)\n[![Docs build](https://readthedocs.org/projects/py-wasm/badge/?version=latest)](http://py-wasm.readthedocs.io/en/latest/?badge=latest)\n   \n\nA python implementation of the web assembly interpreter\n\nRead more in the [documentation on ReadTheDocs](https://py-wasm.readthedocs.io/). [View the change log](https://py-wasm.readthedocs.io/en/latest/releases.html).\n\n## Quickstart\n\n```sh\npip install py-wasm\n```\n\n## Developer Setup\n\nIf you would like to hack on py-wasm, please check out the\n[Ethereum Development Tactical Manual](https://github.com/pipermerriam/ethereum-dev-tactical-manual)\nfor information on how we do:\n\n- Testing\n- Pull Requests\n- Code Style\n- Documentation\n\n### Development Environment Setup\n\nYou can set up your dev environment with:\n\n```sh\ngit clone git@github.com:ethereum/py-wasm.git\ncd py-wasm\nvirtualenv -p python3 venv\n. venv/bin/activate\npip install -e .[dev]\n```\n\n### Testing Setup\n\nDuring development, you might like to have tests run on every file save.\n\nShow flake8 errors on file change:\n\n```sh\n# Test flake8\nwhen-changed -v -s -r -1 wasm/ tests/ -c \"clear; flake8 wasm tests \u0026\u0026 echo 'flake8 success' || echo 'error'\"\n```\n\nRun multi-process tests in one command, but without color:\n\n```sh\n# in the project root:\npytest --numprocesses=4 --looponfail --maxfail=1\n# the same thing, succinctly:\npytest -n 4 -f --maxfail=1\n```\n\nRun in one thread, with color and desktop notifications:\n\n```sh\ncd venv\nptw --onfail \"notify-send -t 5000 'Test failure ⚠⚠⚠⚠⚠' 'python 3 test on py-wasm failed'\" ../tests ../wasm\n```\n\n### Release setup\n\nFor Debian-like systems:\n```\napt install pandoc\n```\n\nTo release a new version:\n\n```sh\nmake release bump=$$VERSION_PART_TO_BUMP$$\n```\n\n#### How to bumpversion\n\nThe version format for this repo is `{major}.{minor}.{patch}` for stable, and\n`{major}.{minor}.{patch}-{stage}.{devnum}` for unstable (`stage` can be alpha or beta).\n\nTo issue the next version in line, specify which part to bump,\nlike `make release bump=minor` or `make release bump=devnum`. This is typically done from the\nmaster branch, except when releasing a beta (in which case the beta is released from master,\nand the previous stable branch is released from said branch). To include changes made with each\nrelease, update \"docs/releases.rst\" with the changes, and apply commit directly to master \nbefore release.\n\nIf you are in a beta version, `make release bump=stage` will switch to a stable.\n\nTo issue an unstable version when the current version is stable, specify the\nnew version explicitly, like `make release bump=\"--new-version 4.0.0-alpha.1 devnum\"`\n\n\n## Development and Testing\n\nThe test suite in this library is run using `pytest`.\n\n```sh\npytest tests/\n```\n\nPart of the test suite includes the *spec* tests from the official Web Assembly\nspec.  These are found under `./tests/spec`.\n\nIt is often useful to view logging output when running tests.  This can be done with:\n\n```sh\npytest tests/spec/ --log-cli-level=debug\n```\n\nWhen trying to diagnose a specific failure in a spec test it can be useful to\nrun the tests in a branch that is currently passing, capture the logging\noutput, and then compare it to the logging output of the test in the failing\nbranch.  In order to make it easier to get the relevant logging output, you can\nuse the flag `--stop-after-command-line=123` where `123` is the line for the\nfailing command.  The full command would look something like:\n\n```sh\npytest tests/spec/ --log-cli-level=debug --stop-after-command-line=123 -k f32.wast\n```\n\nThis sets the logging output to `DEBUG` level, stops the test suite after it\npasses command line `123` and only runs the spec tests from the `f32.wast` spec\ntest file.\n\nThere are a few spec tests that take noticeably longer than the others.  You\ncan omit these from the test run by adding the flag `--skip-slow-spec`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethereum%2Fpy-wasm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fethereum%2Fpy-wasm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethereum%2Fpy-wasm/lists"}