Skip to content

Build source tar.gz (sdist) alongside wheels (bdist_wheel) #285

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from

Conversation

moreati
Copy link
Contributor

@moreati moreati commented Jun 10, 2025

This is a first pass. Probably enough to build conda packages, but not enough for pip or uv to build from. I've tried to be minimally invasive

  • Keep setuptools as the packaging backend
  • Keep setup.py as the source of truth

A more complete overhaul might consider moving to a more recent/focused build library (e.g. PyO3, Maturin); and/or a more recent (e.g. setup.cfg, pyproject.toml).

A diff of file listings before and after show the wheel contents are unchanged, except for version specific paths

$ diff -u \
  <(zipinfo -1 dist-before/wasmtime-33.0.0.dev362-py3-none-macosx_11_0_arm64.whl|sort) \
  <(zipinfo -1 dist.after/wasmtime-33.0.0.dev363-py3-none-macosx_11_0_arm64.whl|sort)
--- /dev/fd/11  2025-06-10 09:53:26
+++ /dev/fd/12  2025-06-10 09:53:26
@@ -1,8 +1,8 @@
-wasmtime-33.0.0.dev362.dist-info/LICENSE
-wasmtime-33.0.0.dev362.dist-info/METADATA
-wasmtime-33.0.0.dev362.dist-info/RECORD
-wasmtime-33.0.0.dev362.dist-info/top_level.txt
-wasmtime-33.0.0.dev362.dist-info/WHEEL
+wasmtime-33.0.0.dev363.dist-info/LICENSE
+wasmtime-33.0.0.dev363.dist-info/METADATA
+wasmtime-33.0.0.dev363.dist-info/RECORD
+wasmtime-33.0.0.dev363.dist-info/top_level.txt
+wasmtime-33.0.0.dev363.dist-info/WHEEL
 wasmtime/__init__.py
 wasmtime/_bindings.py
 wasmtime/_config.py

refs #231

TODO

  • Fix Package metadata version <major>.0.0.dev0 does not match given version <major>.0.0.dev364

This is a first pass. Probably enough to build conda packages, but not enough
for pip or uv to build from. I've tried to be minimally invasive

- Keep setuptools as the packaging backend
- Keep `setup.py` as the source of truth

A more complete overhaul might consider moving to a more recent/focused build
library (e.g. PyO3, Maturin); and/or a more recent (e.g. `setup.cfg`,
`pyproject.toml`).

A diff of file listings before and after show the wheel contents are unchanged,
except for version specific paths

```console
$ diff -u \
  <(zipinfo -1 dist-before/wasmtime-33.0.0.dev362-py3-none-macosx_11_0_arm64.whl|sort) \
  <(zipinfo -1 dist.after/wasmtime-33.0.0.dev363-py3-none-macosx_11_0_arm64.whl|sort)
--- /dev/fd/11  2025-06-10 09:53:26
+++ /dev/fd/12  2025-06-10 09:53:26
@@ -1,8 +1,8 @@
-wasmtime-33.0.0.dev362.dist-info/LICENSE
-wasmtime-33.0.0.dev362.dist-info/METADATA
-wasmtime-33.0.0.dev362.dist-info/RECORD
-wasmtime-33.0.0.dev362.dist-info/top_level.txt
-wasmtime-33.0.0.dev362.dist-info/WHEEL
+wasmtime-33.0.0.dev363.dist-info/LICENSE
+wasmtime-33.0.0.dev363.dist-info/METADATA
+wasmtime-33.0.0.dev363.dist-info/RECORD
+wasmtime-33.0.0.dev363.dist-info/top_level.txt
+wasmtime-33.0.0.dev363.dist-info/WHEEL
 wasmtime/__init__.py
 wasmtime/_bindings.py
 wasmtime/_config.py
```

refs bytecodealliance#231
Comment on lines +11 to +13
prune tests/bindgen/generated
prune tests/codegen/generated
prune wasmtime/bindgen/generated
Copy link
Contributor Author

@moreati moreati Jun 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are the lines I'm least sure of. Whether a source distribution should include generated .py files. For now I've leaned to no, on the presumption they're platform specific and it's easier to add them back later.

Comment on lines +41 to +43
"*-*/*.dll",
"*-*/*.dylib",
"*-*/*.so",
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a bit of a kludge, to maintain the pre-existing layout that has directories which are not valid Python module names (due to the dash). It's probably good enough, but I'm open to alternatives.

@moreati
Copy link
Contributor Author

moreati commented Jun 10, 2025

The sdist was built in GHA, and uploaded to Github artifact store https://github.com/bytecodealliance/wasmtime-py/actions/runs/15555224565/artifacts/3294624002

$ zipinfo -1 ~/Downloads/wheels.zip 
wasmtime-33.0.0.dev364-py3-none-android_26_arm64_v8a.whl
...
wasmtime-33.0.0.dev364-py3-none-win_arm64.whl
wasmtime-33.0.0.dev364.tar.gz

The sdist included these files from source control, plus generated metadata file

  • .flake8, CONTRIBUTING.md, LICENSE, mypy.ini, pytest.ini, README.md, setup.py
  • ci/*
  • examples/*
  • tests/*
  • wasmtime/*
✗ tar tf ~/Downloads/wheels/wasmtime-33.0.0.dev364.tar.gz | sort
wasmtime-33.0.0.dev364/
wasmtime-33.0.0.dev364/.flake8
wasmtime-33.0.0.dev364/ci/
wasmtime-33.0.0.dev364/ci/build-rust.py
wasmtime-33.0.0.dev364/ci/cbindgen.py
wasmtime-33.0.0.dev364/ci/download-wasmtime.py
wasmtime-33.0.0.dev364/ci/wasi_snapshot_preview1.reactor.wasm
wasmtime-33.0.0.dev364/CONTRIBUTING.md
wasmtime-33.0.0.dev364/examples/
wasmtime-33.0.0.dev364/examples/gcd.py
wasmtime-33.0.0.dev364/examples/gcd.wat
wasmtime-33.0.0.dev364/examples/hello.py
wasmtime-33.0.0.dev364/examples/hello.wat
wasmtime-33.0.0.dev364/examples/linking.py
wasmtime-33.0.0.dev364/examples/linking1.wat
wasmtime-33.0.0.dev364/examples/linking2.wat
wasmtime-33.0.0.dev364/examples/loader_add.wat
wasmtime-33.0.0.dev364/examples/loader_component_add.wat
wasmtime-33.0.0.dev364/examples/loader_component.py
wasmtime-33.0.0.dev364/examples/loader_load_python.wat
wasmtime-33.0.0.dev364/examples/loader_load_wasi.wat
wasmtime-33.0.0.dev364/examples/loader_load_wasm_target.wat
wasmtime-33.0.0.dev364/examples/loader_load_wasm.wat
wasmtime-33.0.0.dev364/examples/loader_python_target.py
wasmtime-33.0.0.dev364/examples/loader.py
wasmtime-33.0.0.dev364/examples/memory.py
wasmtime-33.0.0.dev364/examples/memory.wat
wasmtime-33.0.0.dev364/examples/multi.py
wasmtime-33.0.0.dev364/examples/multi.wat
wasmtime-33.0.0.dev364/examples/README.md
wasmtime-33.0.0.dev364/LICENSE
wasmtime-33.0.0.dev364/MANIFEST.in
wasmtime-33.0.0.dev364/mypy.ini
wasmtime-33.0.0.dev364/PKG-INFO
wasmtime-33.0.0.dev364/pytest.ini
wasmtime-33.0.0.dev364/README.md
wasmtime-33.0.0.dev364/rust/
wasmtime-33.0.0.dev364/rust/.gitignore
wasmtime-33.0.0.dev364/rust/bindgen.wit
wasmtime-33.0.0.dev364/rust/Cargo.lock
wasmtime-33.0.0.dev364/rust/Cargo.toml
wasmtime-33.0.0.dev364/rust/python.wit
wasmtime-33.0.0.dev364/rust/src/
wasmtime-33.0.0.dev364/rust/src/bin/
wasmtime-33.0.0.dev364/rust/src/bin/bootstrap.rs
wasmtime-33.0.0.dev364/rust/src/bindgen.rs
wasmtime-33.0.0.dev364/rust/src/files.rs
wasmtime-33.0.0.dev364/rust/src/imports.rs
wasmtime-33.0.0.dev364/rust/src/lib.rs
wasmtime-33.0.0.dev364/rust/src/ns.rs
wasmtime-33.0.0.dev364/rust/src/source.rs
wasmtime-33.0.0.dev364/setup.cfg
wasmtime-33.0.0.dev364/setup.py
wasmtime-33.0.0.dev364/tests/
wasmtime-33.0.0.dev364/tests/__init__.py
wasmtime-33.0.0.dev364/tests/bindgen/
wasmtime-33.0.0.dev364/tests/bindgen/__init__.py
wasmtime-33.0.0.dev364/tests/bindgen/bare_funcs/
wasmtime-33.0.0.dev364/tests/bindgen/bare_funcs/app.py
wasmtime-33.0.0.dev364/tests/bindgen/bare_funcs/component.wit
wasmtime-33.0.0.dev364/tests/bindgen/bare_funcs/test_bare_funcs.py
wasmtime-33.0.0.dev364/tests/bindgen/conftest.py
wasmtime-33.0.0.dev364/tests/bindgen/export_resources/
wasmtime-33.0.0.dev364/tests/bindgen/export_resources/app.py
wasmtime-33.0.0.dev364/tests/bindgen/export_resources/component.wit
wasmtime-33.0.0.dev364/tests/bindgen/export_resources/test_export_resources.py
wasmtime-33.0.0.dev364/tests/bindgen/list_types/
wasmtime-33.0.0.dev364/tests/bindgen/list_types/app.py
wasmtime-33.0.0.dev364/tests/bindgen/list_types/component.wit
wasmtime-33.0.0.dev364/tests/bindgen/list_types/test_lists.py
wasmtime-33.0.0.dev364/tests/codegen/
wasmtime-33.0.0.dev364/tests/codegen/__init__.py
wasmtime-33.0.0.dev364/tests/codegen/foo.wat
wasmtime-33.0.0.dev364/tests/codegen/test_bare_funcs.py
wasmtime-33.0.0.dev364/tests/codegen/test_empty_import.py
wasmtime-33.0.0.dev364/tests/codegen/test_empty.py
wasmtime-33.0.0.dev364/tests/codegen/test_export_resources.py
wasmtime-33.0.0.dev364/tests/codegen/test_external_types.py
wasmtime-33.0.0.dev364/tests/codegen/test_keywords.py
wasmtime-33.0.0.dev364/tests/codegen/test_lists.py
wasmtime-33.0.0.dev364/tests/codegen/test_many_arguments.py
wasmtime-33.0.0.dev364/tests/codegen/test_records.py
wasmtime-33.0.0.dev364/tests/codegen/test_scalars.py
wasmtime-33.0.0.dev364/tests/codegen/test_simple_export.py
wasmtime-33.0.0.dev364/tests/codegen/test_simple_import.py
wasmtime-33.0.0.dev364/tests/codegen/test_two_exports.py
wasmtime-33.0.0.dev364/tests/codegen/test_variants.py
wasmtime-33.0.0.dev364/tests/test_config.py
wasmtime-33.0.0.dev364/tests/test_engine.py
wasmtime-33.0.0.dev364/tests/test_func.py
wasmtime-33.0.0.dev364/tests/test_global.py
wasmtime-33.0.0.dev364/tests/test_instance.py
wasmtime-33.0.0.dev364/tests/test_linker.py
wasmtime-33.0.0.dev364/tests/test_memory.py
wasmtime-33.0.0.dev364/tests/test_module.py
wasmtime-33.0.0.dev364/tests/test_refs.py
wasmtime-33.0.0.dev364/tests/test_shared_memory.py
wasmtime-33.0.0.dev364/tests/test_store.py
wasmtime-33.0.0.dev364/tests/test_table.py
wasmtime-33.0.0.dev364/tests/test_trap.py
wasmtime-33.0.0.dev364/tests/test_types.py
wasmtime-33.0.0.dev364/tests/test_value.py
wasmtime-33.0.0.dev364/tests/test_wasi.py
wasmtime-33.0.0.dev364/tests/test_wat2wasm.py
wasmtime-33.0.0.dev364/wasmtime.egg-info/
wasmtime-33.0.0.dev364/wasmtime.egg-info/dependency_links.txt
wasmtime-33.0.0.dev364/wasmtime.egg-info/PKG-INFO
wasmtime-33.0.0.dev364/wasmtime.egg-info/requires.txt
wasmtime-33.0.0.dev364/wasmtime.egg-info/SOURCES.txt
wasmtime-33.0.0.dev364/wasmtime.egg-info/top_level.txt
wasmtime-33.0.0.dev364/wasmtime/
wasmtime-33.0.0.dev364/wasmtime/__init__.py
wasmtime-33.0.0.dev364/wasmtime/_bindings.py
wasmtime-33.0.0.dev364/wasmtime/_config.py
wasmtime-33.0.0.dev364/wasmtime/_engine.py
wasmtime-33.0.0.dev364/wasmtime/_error.py
wasmtime-33.0.0.dev364/wasmtime/_exportable.py
wasmtime-33.0.0.dev364/wasmtime/_extern.py
wasmtime-33.0.0.dev364/wasmtime/_ffi.py
wasmtime-33.0.0.dev364/wasmtime/_func.py
wasmtime-33.0.0.dev364/wasmtime/_globals.py
wasmtime-33.0.0.dev364/wasmtime/_instance.py
wasmtime-33.0.0.dev364/wasmtime/_linker.py
wasmtime-33.0.0.dev364/wasmtime/_managed.py
wasmtime-33.0.0.dev364/wasmtime/_memory.py
wasmtime-33.0.0.dev364/wasmtime/_module.py
wasmtime-33.0.0.dev364/wasmtime/_sharedmemory.py
wasmtime-33.0.0.dev364/wasmtime/_store.py
wasmtime-33.0.0.dev364/wasmtime/_table.py
wasmtime-33.0.0.dev364/wasmtime/_trap.py
wasmtime-33.0.0.dev364/wasmtime/_types.py
wasmtime-33.0.0.dev364/wasmtime/_value.py
wasmtime-33.0.0.dev364/wasmtime/_wasi.py
wasmtime-33.0.0.dev364/wasmtime/_wat2wasm.py
wasmtime-33.0.0.dev364/wasmtime/bindgen/
wasmtime-33.0.0.dev364/wasmtime/bindgen/__init__.py
wasmtime-33.0.0.dev364/wasmtime/bindgen/__main__.py
wasmtime-33.0.0.dev364/wasmtime/loader.py
wasmtime-33.0.0.dev364/wasmtime/py.typed

@moreati
Copy link
Contributor Author

moreati commented Jun 10, 2025

This probably requires fixing before this PR can be merged. The sdist is not buildable with just uv or pip (as I expected), but for an unexpected reason

$ uv venv
Using CPython 3.13.0
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
$ . .venv/bin/activate
$  /tmp uv pip install ~/Downloads/wheels/wasmtime-33.0.0.dev364.tar.gz 
Resolved 2 packages in 60ms
  × Failed to build `wasmtime @ file:///Users/alex/Downloads/wheels/wasmtime-33.0.0.dev364.tar.gz`
  ╰─▶ Package metadata version `33.0.0.dev0` does not match given version `33.0.0.dev364`

Copy link
Member

@alexcrichton alexcrichton left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this! FWIW the current setup is an amalgamation of understanding of various folks over time of how to do this, and you seem to be quite knowledgable in this area so if you have recommendations for what to change and how to change things it'd be very much appreciated and I'd be fine changing things!

The main basic property I've been trying to preserve is that if you install the wasmtime package on a supported platform it shouldn't require a Rust compiler but should instead come with a precompiled dynamic library. Ideally this also wouldn't download the precompiled binary for any other platform either. Beyond that though I'm fine to ship whatever works, and I'm by no means wed to the current solution.

Question on this though: is the goal to be able to build this from source? If so wouldn't this need to include Wasmtime's own source code or a script of some form to build the Wasmtime C API? (plus the Rust bindings from this package)

@moreati
Copy link
Contributor Author

moreati commented Jun 12, 2025

you seem to be quite knowledgable in this area

I'm most familiar with the older ways (setuptools). I've used some of the newer ones (e.g. PyO3), but not all (e.g. cibuildwheel)

so if you have recommendations for what to change and how to change things it'd be very much appreciated and I'd be fine changing things!

I may take you up on that, but I'm conscious of keeping this PR reviewable, and not changing the entire build process at once.

if you install the wasmtime package on a supported platform it shouldn't require a Rust compiler but should instead come with a precompiled dynamic library

agreed, I'm taking care to leave the existing wheels unchanged in layout/contents.

Question on this though: is the goal to be able to build this from source?

My initial goal was: MVP source distribution for someone building a Conda1 package (as requested by @rxm7706 in #231), as a springboard to familiarise myself with this project and wasmtime. However on closer reading of #231 (comment) a Conda-MVP-sdist may be of limited benefit (given that a Conda build recipe could reportedly just get the source directly from Github).

If so wouldn't this need to include Wasmtime's own source code or a script of some form to build the Wasmtime C API? (plus the Rust bindings from this package)

Building from a source distribution would certainly need some or all of what the scripts in ci/*.py are currently supplying, perhaps present in /usr/*, or /usr/local/*. However I'm aware there is some tension between OS-centric packaging practices/priorities (e.g. Debian, RHEL) and upstream-centric packaging (e.g. rustup, cargo). I'll play around to see how invasive suchg changes would need to be.

  1. Conda is an alternative Python ecosystem to PyPI/pip, with packages that cover whole compiler suites and build toolchains. It's more popular in scientific computing circles.

@moreati
Copy link
Contributor Author

moreati commented Jun 12, 2025

Ideas/options for computing/applying dev<n> pre-release version suffix

  1. Existing mechanism in setup.py, with tighter checks for when it should be invoked, e.g.
    • Check whether dir containing setup.py is a git checkout
    • Check whether running inside Github Action
    • Check whether running specifically in wasmtime-py GHA
  2. setup.py egg_info --tag-build=<...> {sdist,bdist_wheel,...}
  3. Setuptools extension that is git aware, either as a build time (CI time?) dependency, or vendored. E.g.
  4. Drop the suffix (option included mainly for completeness)

There is overlap between some of these options.

Edit: Changed to numbered list

@moreati
Copy link
Contributor Author

moreati commented Jun 12, 2025

Initial attempts with option 1 suggest it's not viable. uv or pip still reject the resulting sdist

➜  /tmp uv pip install ~/src/wasmtime-py/dist/wasmtime-33.0.0.dev365.tar.gz 
  × Failed to build `wasmtime @ file:///Users/alex/src/wasmtime-py/dist/wasmtime-33.0.0.dev365.tar.gz`
  ╰─▶ Package metadata version `33.0.0` does not match given version `33.0.0.dev365`

I'll explore 2 and 3.

@alexcrichton
Copy link
Member

FWIW the versioning scheme there is purely intended for testing via test.pypi.org on each commit so, in theory, each commit can be tested against the testing registry there. It's a bit of a hack so I wouldn't be opposed to dropping it altogether. I think it'd be reasonable to require some sort of explicit opt-in to publish to test.pypi.org via CI and that would necessitate bumping a hardcoded version or something like that perhaps.

I'll be honest in that I haven't really given any thought to what it might look like for this package to use system libwasmtime.so libraries. It also has no logic to build Wasmtime itself and only at this time supports downloading precompiled binaries. That's all ok to change though! I think it'd be reasonable to have something which builds from source via configuration and such.

@moreati
Copy link
Contributor Author

moreati commented Jun 13, 2025

Option 2 (... egg_info --tag-build=.dev123 ...) looks promising

/tmp uv pip install ~/src/wasmtime-py/dist/wasmtime-33.0.365.tar.gz 
Resolved 2 packages in 451ms
      Built wasmtime @ file:///Users/alex/src/wasmtime-py/dist/wasmtime-33.0.365.tar.gz
Prepared 1 package in 387ms
Installed 2 packages in 2ms
 + importlib-resources==6.5.2
 + wasmtime==33.0.365 (from file:///Users/alex/src/wasmtime-py/dist/wasmtime-33.0.365.tar.gz)

The files that get installed aren't usable, but that's another matter.

@moreati
Copy link
Contributor Author

moreati commented Jun 13, 2025

Exploratory branch that incorporates running build-rust.py into setup.py https://github.com/moreati/wasmtime-py/tree/setuptools-crimes, with some ugly kludges specifically in moreati@69aa974.

@moreati
Copy link
Contributor Author

moreati commented Jun 13, 2025

Note to self: possible alternative to fiddling with setuptools cmdclass https://setuptools.pypa.io/en/latest/build_meta.html

moreati added a commit to moreati/wasmtime-py that referenced this pull request Jun 17, 2025
I have integrated running of the ci/download-wasmtime.py and ci/build-rsyt.py
into the PEP-517 `build_wheel()` step. This allows a wheel to be built from
just a source distribution (as opposed to a git checkout), so e.g.

```
pip install --no-binary=:any: wasmtime-py
```

has a chance of working.

The integration mechanism is ci/_custom_build/backend.py, an in-tree PEP-517
build backend that extends the build backend provided by setuptools. This file
is excluded from pytest discovery/scanning for expediency and to keep the
scope of this change smaller. A future PR could remove this restriction to
improve test and style guide coverage.

I elected to keep most project metadata in setup.py for now, again to minimize
the size of the PR. I recommend a future PR to move the metadata to
pyproject.toml.

This change incorporates the changes begun in PR bytecodealliance#285, and supercedes it. As
with that PR wheels builtin in wasmtime-pr should be unchanged - so in the
common case end users do not require a rust compiler, or to build from source.
@moreati
Copy link
Contributor Author

moreati commented Jun 17, 2025

Superceded by #287

@moreati moreati closed this Jun 17, 2025
alexcrichton pushed a commit that referenced this pull request Jun 17, 2025
…p.py (#287)

* Use Python "build" package as build frontend, don't directly run setup.py

Running setup.py directly is deprecated, from 2025-10-31 it won't be
supported. The Python ecosystem is moving toward seperation of build frontend
and backend. This commit switches to the "build" frontend, and keeps
setuptools as the backend.

Two `setup()` keywords have been altered

`packages` was incomplete, but happened to work. Setuptools now warns about
such a condition, which added noise in the build output.

`test_suite` was unnnecessary because pytest is used for testing. It has been
deprecated since by setuptools 41.5.0 (Oct 2019), and its presence emitted a
warning that added noise to build output.

This change should
- allow wasmtime-py wheels to be built, published, and installed.

It should not
- alter versioning behaviour (specifically .devNNN tagging)
- alter wheel contents

It does not
- allow building of an sdist (source tar.gz distribution)

Risks
- `-C=--build-option=--plat-name -C=--build-option=...` is ugly and
  possibly fragile. A future release of build or setuptools may break it.
- No version constraints are placed on setuptools in pyproject.toml.

I think this is the minimum viable change that fixes #286. Other improvements
can be made seperately (e.g. migrating more metadata from setup.py to
pyproject.toml).

See
- https://build.pypa.io/en/stable/
- https://packaging.python.org/en/latest/guides/writing-pyproject-toml/
- https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-test-suite
- pypa/pip#11859
- pypa/setuptools#2491
- pypa/setuptools#3882

* Revert change to packages keyword in setup.py

CI was failing because the "Setup wasmtime-py CI" action in .github/actions/
setup.yml installs `.[testing]` before ci/build-rust.py has been run. Thus
wasmtime/bindgen/generated and wasmtime/bindgen/generated/imports didn't exist
yet.

See
- https://github.com/bytecodealliance/wasmtime-py/actions/runs/15640817846/job/44067456534

* Build source distributions (sdist) alongside wheels (bdist_wheel)

I have integrated running of the ci/download-wasmtime.py and ci/build-rsyt.py
into the PEP-517 `build_wheel()` step. This allows a wheel to be built from
just a source distribution (as opposed to a git checkout), so e.g.

```
pip install --no-binary=:any: wasmtime-py
```

has a chance of working.

The integration mechanism is ci/_custom_build/backend.py, an in-tree PEP-517
build backend that extends the build backend provided by setuptools. This file
is excluded from pytest discovery/scanning for expediency and to keep the
scope of this change smaller. A future PR could remove this restriction to
improve test and style guide coverage.

I elected to keep most project metadata in setup.py for now, again to minimize
the size of the PR. I recommend a future PR to move the metadata to
pyproject.toml.

This change incorporates the changes begun in PR #285, and supercedes it. As
with that PR wheels builtin in wasmtime-pr should be unchanged - so in the
common case end users do not require a rust compiler, or to build from source.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants