Split off from #4468 / #4435 for visibility because it's a bit troublesome.
clang gives a weird error saying that qsort and memcmp were not declared.
This despite the fact that the file in question imported stdlib.h where they
are declared.
It is weird that test_run_docker is inside pyodide-build. This PR moves the
run_docker test file to tools directory. Maybe it is not the best place to put
this test file, but it is at least better than pyodide-build.
When a meta.yaml uses source/path to build from some source tree, pyodide
build-recipes copies the source tree to the build directory before building.
When the source directory has some dist/*.whl files, they are copied as well,
which later causes "Exception: Unexpected number of wheels". Here we filter them
out.
pluggy >=1.1 makes really annoying warnings if the original wrapper hooks raise errors
telling us to use the new style wrapper. This follows their advice to get rid of the warnings.
Buster isn't available for anymore for Python 312 so we have to update.
This also updates to Python 3.11.7, which turns out to be relatively invasive. I broadly
xfailed failing tests in `python_tests.yaml` since we'll upgrade to Python 3.12 soon anyways.
There are a lot of options that are only implemented for one or the other of
these. We warn about some combinations of options that are ignored but skip a
lot of them. Seems best to turn them into separate commands so that the two
commands each only accept arguments that change their behavior.
I also reordered prettier to come last since it's the slowest. I switched from
using black to ruff-format which says its defaults are nearly the same as black.
Since the release of Cython 3 in July 2023, many packages have been updated to
either set an upper bound "Cython < 3", to support both Cython 0.29.x and 3.0, or
to require Cython 3.
Here we remove the global constraint Cython < 3 added in #4001 and update
individual packages if necessary.
Before this PR, `pyimport` can be used like: `pyimport("package")` or `pyimport("package.module")` but `pyimport("package.attribute")` fails. This updates `pyimport` to also work to get package attributes.
I also updated the docs for pyimport.
Adds two devcontainer configurations:
* configuration "Docker": the default, equivalent to using run_docker
* configuration "Conda"
Codespaces and VS Code allow users to select the configuration.
This is intended to be useful for implementing handlers. The handler
might not care about all the arguments. It's convenient to have some
easy way to discard unneeded ones.