From 1d5922dac87ac4219e1d080cbd5e05616a1a9609 Mon Sep 17 00:00:00 2001 From: Aditi Sah Date: Tue, 2 Dec 2025 20:58:56 +0530 Subject: [PATCH 1/4] Add test workflow to publish to Test PyPI --- .../workflows/test_publish_to_testpypi.yml | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .github/workflows/test_publish_to_testpypi.yml diff --git a/.github/workflows/test_publish_to_testpypi.yml b/.github/workflows/test_publish_to_testpypi.yml new file mode 100644 index 0000000..5c4de3a --- /dev/null +++ b/.github/workflows/test_publish_to_testpypi.yml @@ -0,0 +1,21 @@ +name: Test publish to Test PyPI + +on: + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + test_publish: + uses: ./.github/workflows/publish.yml + with: + test_groups: test, concurrency + test_extras: recommended + test_command: pytest --pyargs test_package + repository_url: https://test.pypi.org/legacy/ + upload_to_pypi: 'true' + timeout-minutes: 30 + secrets: + pypi_token: ${{ secrets.TEST_PYPI_API_TOKEN }} \ No newline at end of file From ef7e505e8cc7ec5db584a62a435396cf1a5b4d16 Mon Sep 17 00:00:00 2001 From: Aditi Sah Date: Tue, 2 Dec 2025 21:30:06 +0530 Subject: [PATCH 2/4] Add test for publishing package to Test PyPI --- a/b/c/test.txt | 0 pyproject.toml | 5 ++ test_package/tests/test_publish_pypi.py | 81 +++++++++++++++++++++++++ tox.ini | 14 +++++ 4 files changed, 100 insertions(+) create mode 100644 a/b/c/test.txt create mode 100644 test_package/tests/test_publish_pypi.py diff --git a/a/b/c/test.txt b/a/b/c/test.txt new file mode 100644 index 0000000..e69de29 diff --git a/pyproject.toml b/pyproject.toml index 5dda3f1..574c5b0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,6 +30,11 @@ test = [ "hypothesis>=6.113.0", "pytest>=8.3.5", ] +publish = [ + {include-group = "test"}, + "build>=1.0.0", + "twine>=5.0.0", +] [tool.setuptools] include-package-data = false diff --git a/test_package/tests/test_publish_pypi.py b/test_package/tests/test_publish_pypi.py new file mode 100644 index 0000000..c5cfe48 --- /dev/null +++ b/test_package/tests/test_publish_pypi.py @@ -0,0 +1,81 @@ +import os +import subprocess +import sys +from pathlib import Path + + +def test_build_package(): + """Test that the package can be built successfully.""" + result = subprocess.run( + [sys.executable, "-m", "build", "--outdir", "dist"], + capture_output=True, + text=True + ) + assert result.returncode == 0, f"Build failed: {result.stderr}" + + # Check that distribution files were created + dist_dir = Path("dist") + assert dist_dir.exists(), "dist directory not created" + + dist_files = list(dist_dir.glob("*.whl")) + list(dist_dir.glob("*.tar.gz")) + assert len(dist_files) > 0, "No distribution files created" + + +def test_publish_to_test_pypi(): + """Test publishing package to Test PyPI. + + This test requires TWINE_USERNAME and TWINE_PASSWORD environment variables + to be set for Test PyPI authentication. + + To run this test: + 1. Set TWINE_USERNAME (usually '__token__') + 2. Set TWINE_PASSWORD (your Test PyPI API token) + 3. Run: pytest test_package/tests/test_publish_pypi.py::test_publish_to_test_pypi + """ + # Skip if credentials are not available + if not os.getenv("TWINE_USERNAME") or not os.getenv("TWINE_PASSWORD"): + import pytest + pytest.skip("TWINE_USERNAME and TWINE_PASSWORD not set") + + # First build the package + build_result = subprocess.run( + [sys.executable, "-m", "build", "--outdir", "dist"], + capture_output=True, + text=True + ) + assert build_result.returncode == 0, f"Build failed: {build_result.stderr}" + + # Upload to Test PyPI + upload_result = subprocess.run( + [ + sys.executable, "-m", "twine", "upload", + "--repository", "testpypi", + "--skip-existing", + "dist/*" + ], + capture_output=True, + text=True + ) + + # Check result (skip-existing means it's ok if already uploaded) + assert upload_result.returncode == 0, f"Upload failed: {upload_result.stderr}" + print(f"Upload output: {upload_result.stdout}") + + +def test_check_package_metadata(): + """Test that package metadata is valid for PyPI.""" + # Build first + subprocess.run( + [sys.executable, "-m", "build", "--outdir", "dist"], + capture_output=True, + text=True + ) + + # Check with twine + result = subprocess.run( + [sys.executable, "-m", "twine", "check", "dist/*"], + capture_output=True, + text=True + ) + assert result.returncode == 0, f"Package check failed: {result.stderr}" + assert "PASSED" in result.stdout, "Package metadata validation failed" diff --git a/tox.ini b/tox.ini index bfb2569..6e29c2f 100644 --- a/tox.ini +++ b/tox.ini @@ -63,3 +63,17 @@ commands = conda: python -c "import os, sys; assert os.path.exists(os.path.join(sys.prefix, 'conda-meta', 'history'))" conda: micromamba list pytest --pyargs test_package {posargs} + +[testenv:publish-test] +description = test building and publishing to Test PyPI +skip_install = false +dependency_groups = publish +passenv = + TWINE_USERNAME + TWINE_PASSWORD +commands = + # Run build and metadata check tests (always) + pytest test_package/tests/test_publish_pypi.py::test_build_package -v + pytest test_package/tests/test_publish_pypi.py::test_check_package_metadata -v + # Run actual publish test (only if credentials are set) + pytest test_package/tests/test_publish_pypi.py::test_publish_to_test_pypi -v From da2550a523afaf777770cb16d8ca8316682fb1ca Mon Sep 17 00:00:00 2001 From: Aditi Sah Date: Sat, 6 Dec 2025 13:02:39 +0530 Subject: [PATCH 3/4] Fix pre-commit issues: trailing whitespace, end of files, mixed line endings --- .github/workflows/publish.yml | 6 +++--- .github/workflows/publish_pure_python.yml | 2 +- .github/workflows/test_publish_to_testpypi.yml | 2 +- .github/workflows/tox.yml | 4 ++-- test_package/tests/test_publish_pypi.py | 16 ++++++++-------- tox.ini | 2 +- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index ee5d638..89759ff 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -117,7 +117,7 @@ jobs: python-version: '3.12' - run: echo $LOAD_BUILD_TARGETS_SCRIPT | base64 --decode > load_build_targets.py env: - LOAD_BUILD_TARGETS_SCRIPT: IyAvLy8gc2NyaXB0CiMgcmVxdWlyZXMtcHl0aG9uID0gIj09My4xMiIKIyBkZXBlbmRlbmNpZXMgPSBbCiMgICAgICJjbGljaz09OC4yLjEiLAojICAgICAicHl5YW1sPT02LjAuMiIsCiMgXQojIC8vLwppbXBvcnQganNvbgppbXBvcnQgb3MKaW1wb3J0IHJlCgppbXBvcnQgY2xpY2sKaW1wb3J0IHlhbWwKCk1BQ0hJTkVfVFlQRSA9IHsKICAgICJsaW51eCI6ICJ1YnVudHUtbGF0ZXN0IiwKICAgICJtYWNvcyI6ICJtYWNvcy1sYXRlc3QiLAogICAgIndpbmRvd3MiOiAid2luZG93cy1sYXRlc3QiLAogICAgIndpbmRvd3MtYXJtIjogIndpbmRvd3MtMTEtYXJtIiwKfQoKQ0lCV19CVUlMRCA9IG9zLmVudmlyb24uZ2V0KCJDSUJXX0JVSUxEIiwgIioiKQpDSUJXX0FSQ0hTID0gb3MuZW52aXJvbi5nZXQoIkNJQldfQVJDSFMiLCAiYXV0byIpCgoKQGNsaWNrLmNvbW1hbmQoKQpAY2xpY2sub3B0aW9uKCItLXRhcmdldHMiLCBkZWZhdWx0PSIiKQpkZWYgbG9hZF9idWlsZF90YXJnZXRzKHRhcmdldHMpOgogICAgIiIiU2NyaXB0IHRvIGxvYWQgY2lidWlsZHdoZWVsIHRhcmdldHMgZm9yIEdpdEh1YiBBY3Rpb25zIHdvcmtmbG93LiIiIgogICAgIyBMb2FkIGxpc3Qgb2YgdGFyZ2V0cwogICAgdGFyZ2V0cyA9IHlhbWwubG9hZCh0YXJnZXRzLCBMb2FkZXI9eWFtbC5CYXNlTG9hZGVyKQogICAgcHJpbnQoanNvbi5kdW1wcyh0YXJnZXRzLCBpbmRlbnQ9MikpCgogICAgIyBDcmVhdGUgbWF0cml4CiAgICBtYXRyaXggPSB7ImluY2x1ZGUiOiBbXX0KICAgIGZvciB0YXJnZXQgaW4gdGFyZ2V0czoKICAgICAgICBtYXRyaXhbImluY2x1ZGUiXS5hcHBlbmQoZ2V0X21hdHJpeF9pdGVtKHRhcmdldCkpCgogICAgIyBPdXRwdXQgbWF0cml4CiAgICBwcmludChqc29uLmR1bXBzKG1hdHJpeCwgaW5kZW50PTIpKQogICAgd2l0aCBvcGVuKG9zLmVudmlyb25bIkdJVEhVQl9PVVRQVVQiXSwgImEiKSBhcyBmOgogICAgICAgIGYud3JpdGUoZiJtYXRyaXg9e2pzb24uZHVtcHMobWF0cml4KX1cbiIpCgoKZGVmIGdldF9vcyh0YXJnZXQpOgogICAgaWYgIm1hY29zIiBpbiB0YXJnZXQ6CiAgICAgICAgcmV0dXJuIE1BQ0hJTkVfVFlQRVsibWFjb3MiXQogICAgaWYgIndpbl9hcm0iIGluIHRhcmdldDoKICAgICAgICByZXR1cm4gTUFDSElORV9UWVBFWyJ3aW5kb3dzLWFybSJdCiAgICBpZiAid2luIiBpbiB0YXJnZXQ6CiAgICAgICAgcmV0dXJuIE1BQ0hJTkVfVFlQRVsid2luZG93cyJdCiAgICByZXR1cm4gTUFDSElORV9UWVBFWyJsaW51eCJdCgoKZGVmIGdldF9jaWJ3X2J1aWxkKHRhcmdldCk6CiAgICBpZiB0YXJnZXQgaW4geyJsaW51eCIsICJtYWNvcyIsICJ3aW5kb3dzIn06CiAgICAgICAgcmV0dXJuIENJQldfQlVJTEQKICAgIHJldHVybiB0YXJnZXQKCgpkZWYgZ2V0X2NpYndfYXJjaHModGFyZ2V0KToKICAgICIiIgogICAgSGFuZGxlIG5vbi1uYXRpdmUgYXJjaGl0ZWN0dXJlcwoKICAgIGNpYncgYWxsb3dzIHJ1bm5pbmcgbm9uLW5hdGl2ZSBidWlsZHMgb24gdmFyaW91cyBwbGF0Zm9ybXM6CiAgICBodHRwczovL2NpYnVpbGR3aGVlbC5weXBhLmlvL2VuL3N0YWJsZS9vcHRpb25zLyNhcmNocwoKICAgIFRoaXMgbG9naWMgb3ZlcnJpZGVzIHRoZSAiYXV0byIgZmxhZyBiYXNlZCBvbiBPUyBhbmQgYSBsaXN0IG9mIHN1cHBvcnRlZAogICAgbm9uLW5hdGl2ZSBhcmNoIGlmIGEgbm9uLW5hdGl2ZSBhcmNoIGlzIGdpdmVuIGZvciBhIHBhcnRpY3VsYXIgcGxhdGZvcm0gaW4KICAgIHRhcmdldHMsIHJhdGhlciB0aGFuIHRoZSB1c2VyIGhhdmluZyB0byBkbyB0aGlzIG1hbnVhbGx5LgogICAgIiIiCiAgICBwbGF0Zm9ybV9hcmNocyA9IHsKICAgICAgICAjIFdlIG5vdyBjcm9zcyBjb21waWxlIHg4Nl82NCBvbiBhcm02NCBieSBkZWZhdWx0CiAgICAgICAgIm1hY29zIjogWyJ1bml2ZXJzYWwyIiwgIng4Nl82NCJdLAogICAgICAgICMgVGhpcyBpcyBhIGxpc3Qgb2Ygc3VwcG9ydGVkIGV1bXVsYXRlZCBhcmNoZXMgb24gbGludXgKICAgICAgICAibGludXgiOiBbImFhcmNoNjQiLCAicHBjNjRsZSIsICJzMzkweCIsICJhcm12N2wiXSwKICAgIH0KICAgIGZvciBwbGF0Zm9ybSwgYXJjaHMgaW4gcGxhdGZvcm1fYXJjaHMuaXRlbXMoKToKICAgICAgICBpZiBwbGF0Zm9ybSBpbiB0YXJnZXQ6CiAgICAgICAgICAgIGZvciBhcmNoIGluIGFyY2hzOgogICAgICAgICAgICAgICAgaWYgdGFyZ2V0LmVuZHN3aXRoKGFyY2gpOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBhcmNoCgogICAgIyBJZiBubyBleHBsaWN0IGFyY2ggaGFzIGJlZW4gc3BlY2lmaWVkIGJ1aWxkIGJvdGggYXJtNjQgYW5kIHg4Nl82NCBvbiBtYWNvcwogICAgaWYgIm1hY29zIiBpbiB0YXJnZXQ6CiAgICAgICAgcmV0dXJuIG9zLmVudmlyb24uZ2V0KCJDSUJXX0FSQ0hTIiwgImFybTY0IHg4Nl82NCIpCgogICAgcmV0dXJuIENJQldfQVJDSFMKCgpkZWYgZ2V0X2FydGlmYWN0X25hbWUodGFyZ2V0KToKICAgIGFydGlmYWN0X25hbWUgPSByZS5zdWIociJbXFwgLzo8PnwqP1wiJ10iLCAiLSIsIHRhcmdldCkKICAgIGFydGlmYWN0X25hbWUgPSByZS5zdWIociItKyIsICItIiwgYXJ0aWZhY3RfbmFtZSkKICAgIHJldHVybiBhcnRpZmFjdF9uYW1lCgoKZGVmIGdldF9tYXRyaXhfaXRlbSh0YXJnZXQpOgogICAgZXh0cmFfdGFyZ2V0X2FyZ3MgPSB7fQogICAgaWYgaXNpbnN0YW5jZSh0YXJnZXQsIGRpY3QpOgogICAgICAgIGV4dHJhX3RhcmdldF9hcmdzID0gdGFyZ2V0CiAgICAgICAgdGFyZ2V0ID0gZXh0cmFfdGFyZ2V0X2FyZ3MucG9wKCJ0YXJnZXQiKQogICAgcmV0dXJuIHsKICAgICAgICAidGFyZ2V0IjogdGFyZ2V0LAogICAgICAgICJydW5zLW9uIjogZ2V0X29zKHRhcmdldCksCiAgICAgICAgIkNJQldfQlVJTEQiOiBnZXRfY2lid19idWlsZCh0YXJnZXQpLAogICAgICAgICJDSUJXX0FSQ0hTIjogZ2V0X2NpYndfYXJjaHModGFyZ2V0KSwKICAgICAgICAiYXJ0aWZhY3QtbmFtZSI6IGdldF9hcnRpZmFjdF9uYW1lKHRhcmdldCksCiAgICAgICAgKipleHRyYV90YXJnZXRfYXJncywKICAgIH0KCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgbG9hZF9idWlsZF90YXJnZXRzKCkK + LOAD_BUILD_TARGETS_SCRIPT: IyAvLy8gc2NyaXB0DQojIHJlcXVpcmVzLXB5dGhvbiA9ICI9PTMuMTIiDQojIGRlcGVuZGVuY2llcyA9IFsNCiMgICAgICJjbGljaz09OC4yLjEiLA0KIyAgICAgInB5eWFtbD09Ni4wLjIiLA0KIyBdDQojIC8vLw0KaW1wb3J0IGpzb24NCmltcG9ydCBvcw0KaW1wb3J0IHJlDQoNCmltcG9ydCBjbGljaw0KaW1wb3J0IHlhbWwNCg0KTUFDSElORV9UWVBFID0gew0KICAgICJsaW51eCI6ICJ1YnVudHUtbGF0ZXN0IiwNCiAgICAibWFjb3MiOiAibWFjb3MtbGF0ZXN0IiwNCiAgICAid2luZG93cyI6ICJ3aW5kb3dzLWxhdGVzdCIsDQogICAgIndpbmRvd3MtYXJtIjogIndpbmRvd3MtMTEtYXJtIiwNCn0NCg0KQ0lCV19CVUlMRCA9IG9zLmVudmlyb24uZ2V0KCJDSUJXX0JVSUxEIiwgIioiKQ0KQ0lCV19BUkNIUyA9IG9zLmVudmlyb24uZ2V0KCJDSUJXX0FSQ0hTIiwgImF1dG8iKQ0KDQoNCkBjbGljay5jb21tYW5kKCkNCkBjbGljay5vcHRpb24oIi0tdGFyZ2V0cyIsIGRlZmF1bHQ9IiIpDQpkZWYgbG9hZF9idWlsZF90YXJnZXRzKHRhcmdldHMpOg0KICAgICIiIlNjcmlwdCB0byBsb2FkIGNpYnVpbGR3aGVlbCB0YXJnZXRzIGZvciBHaXRIdWIgQWN0aW9ucyB3b3JrZmxvdy4iIiINCiAgICAjIExvYWQgbGlzdCBvZiB0YXJnZXRzDQogICAgdGFyZ2V0cyA9IHlhbWwubG9hZCh0YXJnZXRzLCBMb2FkZXI9eWFtbC5CYXNlTG9hZGVyKQ0KICAgIHByaW50KGpzb24uZHVtcHModGFyZ2V0cywgaW5kZW50PTIpKQ0KDQogICAgIyBDcmVhdGUgbWF0cml4DQogICAgbWF0cml4ID0geyJpbmNsdWRlIjogW119DQogICAgZm9yIHRhcmdldCBpbiB0YXJnZXRzOg0KICAgICAgICBtYXRyaXhbImluY2x1ZGUiXS5hcHBlbmQoZ2V0X21hdHJpeF9pdGVtKHRhcmdldCkpDQoNCiAgICAjIE91dHB1dCBtYXRyaXgNCiAgICBwcmludChqc29uLmR1bXBzKG1hdHJpeCwgaW5kZW50PTIpKQ0KICAgIHdpdGggb3Blbihvcy5lbnZpcm9uWyJHSVRIVUJfT1VUUFVUIl0sICJhIikgYXMgZjoNCiAgICAgICAgZi53cml0ZShmIm1hdHJpeD17anNvbi5kdW1wcyhtYXRyaXgpfVxuIikNCg0KDQpkZWYgZ2V0X29zKHRhcmdldCk6DQogICAgaWYgIm1hY29zIiBpbiB0YXJnZXQ6DQogICAgICAgIHJldHVybiBNQUNISU5FX1RZUEVbIm1hY29zIl0NCiAgICBpZiAid2luX2FybSIgaW4gdGFyZ2V0Og0KICAgICAgICByZXR1cm4gTUFDSElORV9UWVBFWyJ3aW5kb3dzLWFybSJdDQogICAgaWYgIndpbiIgaW4gdGFyZ2V0Og0KICAgICAgICByZXR1cm4gTUFDSElORV9UWVBFWyJ3aW5kb3dzIl0NCiAgICByZXR1cm4gTUFDSElORV9UWVBFWyJsaW51eCJdDQoNCg0KZGVmIGdldF9jaWJ3X2J1aWxkKHRhcmdldCk6DQogICAgaWYgdGFyZ2V0IGluIHsibGludXgiLCAibWFjb3MiLCAid2luZG93cyJ9Og0KICAgICAgICByZXR1cm4gQ0lCV19CVUlMRA0KICAgIHJldHVybiB0YXJnZXQNCg0KDQpkZWYgZ2V0X2NpYndfYXJjaHModGFyZ2V0KToNCiAgICAiIiINCiAgICBIYW5kbGUgbm9uLW5hdGl2ZSBhcmNoaXRlY3R1cmVzDQoNCiAgICBjaWJ3IGFsbG93cyBydW5uaW5nIG5vbi1uYXRpdmUgYnVpbGRzIG9uIHZhcmlvdXMgcGxhdGZvcm1zOg0KICAgIGh0dHBzOi8vY2lidWlsZHdoZWVsLnB5cGEuaW8vZW4vc3RhYmxlL29wdGlvbnMvI2FyY2hzDQoNCiAgICBUaGlzIGxvZ2ljIG92ZXJyaWRlcyB0aGUgImF1dG8iIGZsYWcgYmFzZWQgb24gT1MgYW5kIGEgbGlzdCBvZiBzdXBwb3J0ZWQNCiAgICBub24tbmF0aXZlIGFyY2ggaWYgYSBub24tbmF0aXZlIGFyY2ggaXMgZ2l2ZW4gZm9yIGEgcGFydGljdWxhciBwbGF0Zm9ybSBpbg0KICAgIHRhcmdldHMsIHJhdGhlciB0aGFuIHRoZSB1c2VyIGhhdmluZyB0byBkbyB0aGlzIG1hbnVhbGx5Lg0KICAgICIiIg0KICAgIHBsYXRmb3JtX2FyY2hzID0gew0KICAgICAgICAjIFdlIG5vdyBjcm9zcyBjb21waWxlIHg4Nl82NCBvbiBhcm02NCBieSBkZWZhdWx0DQogICAgICAgICJtYWNvcyI6IFsidW5pdmVyc2FsMiIsICJ4ODZfNjQiXSwNCiAgICAgICAgIyBUaGlzIGlzIGEgbGlzdCBvZiBzdXBwb3J0ZWQgZXVtdWxhdGVkIGFyY2hlcyBvbiBsaW51eA0KICAgICAgICAibGludXgiOiBbImFhcmNoNjQiLCAicHBjNjRsZSIsICJzMzkweCIsICJhcm12N2wiXSwNCiAgICB9DQogICAgZm9yIHBsYXRmb3JtLCBhcmNocyBpbiBwbGF0Zm9ybV9hcmNocy5pdGVtcygpOg0KICAgICAgICBpZiBwbGF0Zm9ybSBpbiB0YXJnZXQ6DQogICAgICAgICAgICBmb3IgYXJjaCBpbiBhcmNoczoNCiAgICAgICAgICAgICAgICBpZiB0YXJnZXQuZW5kc3dpdGgoYXJjaCk6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBhcmNoDQoNCiAgICAjIElmIG5vIGV4cGxpY3QgYXJjaCBoYXMgYmVlbiBzcGVjaWZpZWQgYnVpbGQgYm90aCBhcm02NCBhbmQgeDg2XzY0IG9uIG1hY29zDQogICAgaWYgIm1hY29zIiBpbiB0YXJnZXQ6DQogICAgICAgIHJldHVybiBvcy5lbnZpcm9uLmdldCgiQ0lCV19BUkNIUyIsICJhcm02NCB4ODZfNjQiKQ0KDQogICAgcmV0dXJuIENJQldfQVJDSFMNCg0KDQpkZWYgZ2V0X2FydGlmYWN0X25hbWUodGFyZ2V0KToNCiAgICBhcnRpZmFjdF9uYW1lID0gcmUuc3ViKHIiW1xcIC86PD58Kj9cIiddIiwgIi0iLCB0YXJnZXQpDQogICAgYXJ0aWZhY3RfbmFtZSA9IHJlLnN1YihyIi0rIiwgIi0iLCBhcnRpZmFjdF9uYW1lKQ0KICAgIHJldHVybiBhcnRpZmFjdF9uYW1lDQoNCg0KZGVmIGdldF9tYXRyaXhfaXRlbSh0YXJnZXQpOg0KICAgIGV4dHJhX3RhcmdldF9hcmdzID0ge30NCiAgICBpZiBpc2luc3RhbmNlKHRhcmdldCwgZGljdCk6DQogICAgICAgIGV4dHJhX3RhcmdldF9hcmdzID0gdGFyZ2V0DQogICAgICAgIHRhcmdldCA9IGV4dHJhX3RhcmdldF9hcmdzLnBvcCgidGFyZ2V0IikNCiAgICByZXR1cm4gew0KICAgICAgICAidGFyZ2V0IjogdGFyZ2V0LA0KICAgICAgICAicnVucy1vbiI6IGdldF9vcyh0YXJnZXQpLA0KICAgICAgICAiQ0lCV19CVUlMRCI6IGdldF9jaWJ3X2J1aWxkKHRhcmdldCksDQogICAgICAgICJDSUJXX0FSQ0hTIjogZ2V0X2NpYndfYXJjaHModGFyZ2V0KSwNCiAgICAgICAgImFydGlmYWN0LW5hbWUiOiBnZXRfYXJ0aWZhY3RfbmFtZSh0YXJnZXQpLA0KICAgICAgICAqKmV4dHJhX3RhcmdldF9hcmdzLA0KICAgIH0NCg0KDQppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOg0KICAgIGxvYWRfYnVpbGRfdGFyZ2V0cygpDQo= - id: set-outputs run: pipx run load_build_targets.py --targets "${{ inputs.targets }}" shell: sh @@ -197,7 +197,7 @@ jobs: rm set_env.py shell: sh env: - SET_ENV_SCRIPT: IyAvLy8gc2NyaXB0CiMgcmVxdWlyZXMtcHl0aG9uID0gIj09My4xMiIKIyBkZXBlbmRlbmNpZXMgPSBbCiMgICAgICJweXlhbWw9PTYuMC4yIiwKIyBdCiMgLy8vCmltcG9ydCBqc29uCmltcG9ydCBvcwppbXBvcnQgc3lzCgppbXBvcnQgeWFtbAoKR0lUSFVCX0VOViA9IG9zLmdldGVudigiR0lUSFVCX0VOViIpCmlmIEdJVEhVQl9FTlYgaXMgTm9uZToKICAgIHJhaXNlIFZhbHVlRXJyb3IoIkdJVEhVQl9FTlYgbm90IHNldC4gTXVzdCBiZSBydW4gaW5zaWRlIEdpdEh1YiBBY3Rpb25zLiIpCgpERUxJTUlURVIgPSAiRU9GIgoKCmRlZiBzZXRfZW52KGVudik6CgogICAgZW52ID0geWFtbC5sb2FkKGVudiwgTG9hZGVyPXlhbWwuQmFzZUxvYWRlcikKICAgIHByaW50KGpzb24uZHVtcHMoZW52LCBpbmRlbnQ9MikpCgogICAgaWYgbm90IGlzaW5zdGFuY2UoZW52LCBkaWN0KToKICAgICAgICB0aXRsZSA9ICJgZW52YCBtdXN0IGJlIG1hcHBpbmciCiAgICAgICAgbWVzc2FnZSA9IGYiYGVudmAgbXVzdCBiZSBtYXBwaW5nIG9mIGVudiB2YXJpYWJsZXMgdG8gdmFsdWVzLCBnb3QgdHlwZSB7dHlwZShlbnYpfSIKICAgICAgICBwcmludChmIjo6ZXJyb3IgdGl0bGU9e3RpdGxlfTo6e21lc3NhZ2V9IikKICAgICAgICBleGl0KDEpCgogICAgZm9yIGssIHYgaW4gZW52Lml0ZW1zKCk6CgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHYsIHN0cik6CiAgICAgICAgICAgIHRpdGxlID0gImBlbnZgIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MiCiAgICAgICAgICAgIG1lc3NhZ2UgPSBmImBlbnZgIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MsIGJ1dCB2YWx1ZSBvZiB7a30gaGFzIHR5cGUge3R5cGUodil9IgogICAgICAgICAgICBwcmludChmIjo6ZXJyb3IgdGl0bGU9e3RpdGxlfTo6e21lc3NhZ2V9IikKICAgICAgICAgICAgZXhpdCgxKQoKICAgICAgICB2ID0gdi5zcGxpdCgiXG4iKQoKICAgICAgICB3aXRoIG9wZW4oR0lUSFVCX0VOViwgImEiKSBhcyBmOgogICAgICAgICAgICBpZiBsZW4odikgPT0gMToKICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7a309e3ZbMF19XG4iKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gdjoKICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbGluZS5zdHJpcCgpICE9IERFTElNSVRFUgogICAgICAgICAgICAgICAgZi53cml0ZShmIntrfTw8e0RFTElNSVRFUn1cbiIpCiAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiB2OgogICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7bGluZX1cbiIpCiAgICAgICAgICAgICAgICBmLndyaXRlKGYie0RFTElNSVRFUn1cbiIpCgogICAgICAgIHByaW50KGYie2t9IHdyaXR0ZW4gdG8gR0lUSFVCX0VOViIpCgoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIHNldF9lbnYoc3lzLmFyZ3ZbMV0pCg== + SET_ENV_SCRIPT: IyAvLy8gc2NyaXB0DQojIHJlcXVpcmVzLXB5dGhvbiA9ICI9PTMuMTIiDQojIGRlcGVuZGVuY2llcyA9IFsNCiMgICAgICJweXlhbWw9PTYuMC4yIiwNCiMgXQ0KIyAvLy8NCmltcG9ydCBqc29uDQppbXBvcnQgb3MNCmltcG9ydCBzeXMNCg0KaW1wb3J0IHlhbWwNCg0KR0lUSFVCX0VOViA9IG9zLmdldGVudigiR0lUSFVCX0VOViIpDQppZiBHSVRIVUJfRU5WIGlzIE5vbmU6DQogICAgcmFpc2UgVmFsdWVFcnJvcigiR0lUSFVCX0VOViBub3Qgc2V0LiBNdXN0IGJlIHJ1biBpbnNpZGUgR2l0SHViIEFjdGlvbnMuIikNCg0KREVMSU1JVEVSID0gIkVPRiINCg0KDQpkZWYgc2V0X2VudihlbnYpOg0KDQogICAgZW52ID0geWFtbC5sb2FkKGVudiwgTG9hZGVyPXlhbWwuQmFzZUxvYWRlcikNCiAgICBwcmludChqc29uLmR1bXBzKGVudiwgaW5kZW50PTIpKQ0KDQogICAgaWYgbm90IGlzaW5zdGFuY2UoZW52LCBkaWN0KToNCiAgICAgICAgdGl0bGUgPSAiYGVudmAgbXVzdCBiZSBtYXBwaW5nIg0KICAgICAgICBtZXNzYWdlID0gZiJgZW52YCBtdXN0IGJlIG1hcHBpbmcgb2YgZW52IHZhcmlhYmxlcyB0byB2YWx1ZXMsIGdvdCB0eXBlIHt0eXBlKGVudil9Ig0KICAgICAgICBwcmludChmIjo6ZXJyb3IgdGl0bGU9e3RpdGxlfTo6e21lc3NhZ2V9IikNCiAgICAgICAgZXhpdCgxKQ0KDQogICAgZm9yIGssIHYgaW4gZW52Lml0ZW1zKCk6DQoNCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uodiwgc3RyKToNCiAgICAgICAgICAgIHRpdGxlID0gImBlbnZgIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MiDQogICAgICAgICAgICBtZXNzYWdlID0gZiJgZW52YCB2YWx1ZXMgbXVzdCBiZSBzdHJpbmdzLCBidXQgdmFsdWUgb2Yge2t9IGhhcyB0eXBlIHt0eXBlKHYpfSINCiAgICAgICAgICAgIHByaW50KGYiOjplcnJvciB0aXRsZT17dGl0bGV9Ojp7bWVzc2FnZX0iKQ0KICAgICAgICAgICAgZXhpdCgxKQ0KDQogICAgICAgIHYgPSB2LnNwbGl0KCJcbiIpDQoNCiAgICAgICAgd2l0aCBvcGVuKEdJVEhVQl9FTlYsICJhIikgYXMgZjoNCiAgICAgICAgICAgIGlmIGxlbih2KSA9PSAxOg0KICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7a309e3ZbMF19XG4iKQ0KICAgICAgICAgICAgZWxzZToNCiAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiB2Og0KICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbGluZS5zdHJpcCgpICE9IERFTElNSVRFUg0KICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7a308PHtERUxJTUlURVJ9XG4iKQ0KICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHY6DQogICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7bGluZX1cbiIpDQogICAgICAgICAgICAgICAgZi53cml0ZShmIntERUxJTUlURVJ9XG4iKQ0KDQogICAgICAgIHByaW50KGYie2t9IHdyaXR0ZW4gdG8gR0lUSFVCX0VOViIpDQoNCg0KaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoNCiAgICBzZXRfZW52KHN5cy5hcmd2WzFdKQ0K - name: Run cibuildwheel uses: pypa/cibuildwheel@9c00cb4f6b517705a3794b22395aedc36257242c # v3.2.1 with: @@ -231,7 +231,7 @@ jobs: rm set_env.py shell: sh env: - SET_ENV_SCRIPT: IyAvLy8gc2NyaXB0CiMgcmVxdWlyZXMtcHl0aG9uID0gIj09My4xMiIKIyBkZXBlbmRlbmNpZXMgPSBbCiMgICAgICJweXlhbWw9PTYuMC4yIiwKIyBdCiMgLy8vCmltcG9ydCBqc29uCmltcG9ydCBvcwppbXBvcnQgc3lzCgppbXBvcnQgeWFtbAoKR0lUSFVCX0VOViA9IG9zLmdldGVudigiR0lUSFVCX0VOViIpCmlmIEdJVEhVQl9FTlYgaXMgTm9uZToKICAgIHJhaXNlIFZhbHVlRXJyb3IoIkdJVEhVQl9FTlYgbm90IHNldC4gTXVzdCBiZSBydW4gaW5zaWRlIEdpdEh1YiBBY3Rpb25zLiIpCgpERUxJTUlURVIgPSAiRU9GIgoKCmRlZiBzZXRfZW52KGVudik6CgogICAgZW52ID0geWFtbC5sb2FkKGVudiwgTG9hZGVyPXlhbWwuQmFzZUxvYWRlcikKICAgIHByaW50KGpzb24uZHVtcHMoZW52LCBpbmRlbnQ9MikpCgogICAgaWYgbm90IGlzaW5zdGFuY2UoZW52LCBkaWN0KToKICAgICAgICB0aXRsZSA9ICJgZW52YCBtdXN0IGJlIG1hcHBpbmciCiAgICAgICAgbWVzc2FnZSA9IGYiYGVudmAgbXVzdCBiZSBtYXBwaW5nIG9mIGVudiB2YXJpYWJsZXMgdG8gdmFsdWVzLCBnb3QgdHlwZSB7dHlwZShlbnYpfSIKICAgICAgICBwcmludChmIjo6ZXJyb3IgdGl0bGU9e3RpdGxlfTo6e21lc3NhZ2V9IikKICAgICAgICBleGl0KDEpCgogICAgZm9yIGssIHYgaW4gZW52Lml0ZW1zKCk6CgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHYsIHN0cik6CiAgICAgICAgICAgIHRpdGxlID0gImBlbnZgIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MiCiAgICAgICAgICAgIG1lc3NhZ2UgPSBmImBlbnZgIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MsIGJ1dCB2YWx1ZSBvZiB7a30gaGFzIHR5cGUge3R5cGUodil9IgogICAgICAgICAgICBwcmludChmIjo6ZXJyb3IgdGl0bGU9e3RpdGxlfTo6e21lc3NhZ2V9IikKICAgICAgICAgICAgZXhpdCgxKQoKICAgICAgICB2ID0gdi5zcGxpdCgiXG4iKQoKICAgICAgICB3aXRoIG9wZW4oR0lUSFVCX0VOViwgImEiKSBhcyBmOgogICAgICAgICAgICBpZiBsZW4odikgPT0gMToKICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7a309e3ZbMF19XG4iKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gdjoKICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbGluZS5zdHJpcCgpICE9IERFTElNSVRFUgogICAgICAgICAgICAgICAgZi53cml0ZShmIntrfTw8e0RFTElNSVRFUn1cbiIpCiAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiB2OgogICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7bGluZX1cbiIpCiAgICAgICAgICAgICAgICBmLndyaXRlKGYie0RFTElNSVRFUn1cbiIpCgogICAgICAgIHByaW50KGYie2t9IHdyaXR0ZW4gdG8gR0lUSFVCX0VOViIpCgoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIHNldF9lbnYoc3lzLmFyZ3ZbMV0pCg== + SET_ENV_SCRIPT: IyAvLy8gc2NyaXB0DQojIHJlcXVpcmVzLXB5dGhvbiA9ICI9PTMuMTIiDQojIGRlcGVuZGVuY2llcyA9IFsNCiMgICAgICJweXlhbWw9PTYuMC4yIiwNCiMgXQ0KIyAvLy8NCmltcG9ydCBqc29uDQppbXBvcnQgb3MNCmltcG9ydCBzeXMNCg0KaW1wb3J0IHlhbWwNCg0KR0lUSFVCX0VOViA9IG9zLmdldGVudigiR0lUSFVCX0VOViIpDQppZiBHSVRIVUJfRU5WIGlzIE5vbmU6DQogICAgcmFpc2UgVmFsdWVFcnJvcigiR0lUSFVCX0VOViBub3Qgc2V0LiBNdXN0IGJlIHJ1biBpbnNpZGUgR2l0SHViIEFjdGlvbnMuIikNCg0KREVMSU1JVEVSID0gIkVPRiINCg0KDQpkZWYgc2V0X2VudihlbnYpOg0KDQogICAgZW52ID0geWFtbC5sb2FkKGVudiwgTG9hZGVyPXlhbWwuQmFzZUxvYWRlcikNCiAgICBwcmludChqc29uLmR1bXBzKGVudiwgaW5kZW50PTIpKQ0KDQogICAgaWYgbm90IGlzaW5zdGFuY2UoZW52LCBkaWN0KToNCiAgICAgICAgdGl0bGUgPSAiYGVudmAgbXVzdCBiZSBtYXBwaW5nIg0KICAgICAgICBtZXNzYWdlID0gZiJgZW52YCBtdXN0IGJlIG1hcHBpbmcgb2YgZW52IHZhcmlhYmxlcyB0byB2YWx1ZXMsIGdvdCB0eXBlIHt0eXBlKGVudil9Ig0KICAgICAgICBwcmludChmIjo6ZXJyb3IgdGl0bGU9e3RpdGxlfTo6e21lc3NhZ2V9IikNCiAgICAgICAgZXhpdCgxKQ0KDQogICAgZm9yIGssIHYgaW4gZW52Lml0ZW1zKCk6DQoNCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uodiwgc3RyKToNCiAgICAgICAgICAgIHRpdGxlID0gImBlbnZgIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MiDQogICAgICAgICAgICBtZXNzYWdlID0gZiJgZW52YCB2YWx1ZXMgbXVzdCBiZSBzdHJpbmdzLCBidXQgdmFsdWUgb2Yge2t9IGhhcyB0eXBlIHt0eXBlKHYpfSINCiAgICAgICAgICAgIHByaW50KGYiOjplcnJvciB0aXRsZT17dGl0bGV9Ojp7bWVzc2FnZX0iKQ0KICAgICAgICAgICAgZXhpdCgxKQ0KDQogICAgICAgIHYgPSB2LnNwbGl0KCJcbiIpDQoNCiAgICAgICAgd2l0aCBvcGVuKEdJVEhVQl9FTlYsICJhIikgYXMgZjoNCiAgICAgICAgICAgIGlmIGxlbih2KSA9PSAxOg0KICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7a309e3ZbMF19XG4iKQ0KICAgICAgICAgICAgZWxzZToNCiAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiB2Og0KICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbGluZS5zdHJpcCgpICE9IERFTElNSVRFUg0KICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7a308PHtERUxJTUlURVJ9XG4iKQ0KICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHY6DQogICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7bGluZX1cbiIpDQogICAgICAgICAgICAgICAgZi53cml0ZShmIntERUxJTUlURVJ9XG4iKQ0KDQogICAgICAgIHByaW50KGYie2t9IHdyaXR0ZW4gdG8gR0lUSFVCX0VOViIpDQoNCg0KaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoNCiAgICBzZXRfZW52KHN5cy5hcmd2WzFdKQ0K - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: fetch-depth: 0 diff --git a/.github/workflows/publish_pure_python.yml b/.github/workflows/publish_pure_python.yml index 093e2b3..2214cf4 100644 --- a/.github/workflows/publish_pure_python.yml +++ b/.github/workflows/publish_pure_python.yml @@ -108,7 +108,7 @@ jobs: rm set_env.py shell: sh env: - SET_ENV_SCRIPT: IyAvLy8gc2NyaXB0CiMgcmVxdWlyZXMtcHl0aG9uID0gIj09My4xMiIKIyBkZXBlbmRlbmNpZXMgPSBbCiMgICAgICJweXlhbWw9PTYuMC4yIiwKIyBdCiMgLy8vCmltcG9ydCBqc29uCmltcG9ydCBvcwppbXBvcnQgc3lzCgppbXBvcnQgeWFtbAoKR0lUSFVCX0VOViA9IG9zLmdldGVudigiR0lUSFVCX0VOViIpCmlmIEdJVEhVQl9FTlYgaXMgTm9uZToKICAgIHJhaXNlIFZhbHVlRXJyb3IoIkdJVEhVQl9FTlYgbm90IHNldC4gTXVzdCBiZSBydW4gaW5zaWRlIEdpdEh1YiBBY3Rpb25zLiIpCgpERUxJTUlURVIgPSAiRU9GIgoKCmRlZiBzZXRfZW52KGVudik6CgogICAgZW52ID0geWFtbC5sb2FkKGVudiwgTG9hZGVyPXlhbWwuQmFzZUxvYWRlcikKICAgIHByaW50KGpzb24uZHVtcHMoZW52LCBpbmRlbnQ9MikpCgogICAgaWYgbm90IGlzaW5zdGFuY2UoZW52LCBkaWN0KToKICAgICAgICB0aXRsZSA9ICJgZW52YCBtdXN0IGJlIG1hcHBpbmciCiAgICAgICAgbWVzc2FnZSA9IGYiYGVudmAgbXVzdCBiZSBtYXBwaW5nIG9mIGVudiB2YXJpYWJsZXMgdG8gdmFsdWVzLCBnb3QgdHlwZSB7dHlwZShlbnYpfSIKICAgICAgICBwcmludChmIjo6ZXJyb3IgdGl0bGU9e3RpdGxlfTo6e21lc3NhZ2V9IikKICAgICAgICBleGl0KDEpCgogICAgZm9yIGssIHYgaW4gZW52Lml0ZW1zKCk6CgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHYsIHN0cik6CiAgICAgICAgICAgIHRpdGxlID0gImBlbnZgIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MiCiAgICAgICAgICAgIG1lc3NhZ2UgPSBmImBlbnZgIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MsIGJ1dCB2YWx1ZSBvZiB7a30gaGFzIHR5cGUge3R5cGUodil9IgogICAgICAgICAgICBwcmludChmIjo6ZXJyb3IgdGl0bGU9e3RpdGxlfTo6e21lc3NhZ2V9IikKICAgICAgICAgICAgZXhpdCgxKQoKICAgICAgICB2ID0gdi5zcGxpdCgiXG4iKQoKICAgICAgICB3aXRoIG9wZW4oR0lUSFVCX0VOViwgImEiKSBhcyBmOgogICAgICAgICAgICBpZiBsZW4odikgPT0gMToKICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7a309e3ZbMF19XG4iKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gdjoKICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbGluZS5zdHJpcCgpICE9IERFTElNSVRFUgogICAgICAgICAgICAgICAgZi53cml0ZShmIntrfTw8e0RFTElNSVRFUn1cbiIpCiAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiB2OgogICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7bGluZX1cbiIpCiAgICAgICAgICAgICAgICBmLndyaXRlKGYie0RFTElNSVRFUn1cbiIpCgogICAgICAgIHByaW50KGYie2t9IHdyaXR0ZW4gdG8gR0lUSFVCX0VOViIpCgoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIHNldF9lbnYoc3lzLmFyZ3ZbMV0pCg== + SET_ENV_SCRIPT: IyAvLy8gc2NyaXB0DQojIHJlcXVpcmVzLXB5dGhvbiA9ICI9PTMuMTIiDQojIGRlcGVuZGVuY2llcyA9IFsNCiMgICAgICJweXlhbWw9PTYuMC4yIiwNCiMgXQ0KIyAvLy8NCmltcG9ydCBqc29uDQppbXBvcnQgb3MNCmltcG9ydCBzeXMNCg0KaW1wb3J0IHlhbWwNCg0KR0lUSFVCX0VOViA9IG9zLmdldGVudigiR0lUSFVCX0VOViIpDQppZiBHSVRIVUJfRU5WIGlzIE5vbmU6DQogICAgcmFpc2UgVmFsdWVFcnJvcigiR0lUSFVCX0VOViBub3Qgc2V0LiBNdXN0IGJlIHJ1biBpbnNpZGUgR2l0SHViIEFjdGlvbnMuIikNCg0KREVMSU1JVEVSID0gIkVPRiINCg0KDQpkZWYgc2V0X2VudihlbnYpOg0KDQogICAgZW52ID0geWFtbC5sb2FkKGVudiwgTG9hZGVyPXlhbWwuQmFzZUxvYWRlcikNCiAgICBwcmludChqc29uLmR1bXBzKGVudiwgaW5kZW50PTIpKQ0KDQogICAgaWYgbm90IGlzaW5zdGFuY2UoZW52LCBkaWN0KToNCiAgICAgICAgdGl0bGUgPSAiYGVudmAgbXVzdCBiZSBtYXBwaW5nIg0KICAgICAgICBtZXNzYWdlID0gZiJgZW52YCBtdXN0IGJlIG1hcHBpbmcgb2YgZW52IHZhcmlhYmxlcyB0byB2YWx1ZXMsIGdvdCB0eXBlIHt0eXBlKGVudil9Ig0KICAgICAgICBwcmludChmIjo6ZXJyb3IgdGl0bGU9e3RpdGxlfTo6e21lc3NhZ2V9IikNCiAgICAgICAgZXhpdCgxKQ0KDQogICAgZm9yIGssIHYgaW4gZW52Lml0ZW1zKCk6DQoNCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uodiwgc3RyKToNCiAgICAgICAgICAgIHRpdGxlID0gImBlbnZgIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MiDQogICAgICAgICAgICBtZXNzYWdlID0gZiJgZW52YCB2YWx1ZXMgbXVzdCBiZSBzdHJpbmdzLCBidXQgdmFsdWUgb2Yge2t9IGhhcyB0eXBlIHt0eXBlKHYpfSINCiAgICAgICAgICAgIHByaW50KGYiOjplcnJvciB0aXRsZT17dGl0bGV9Ojp7bWVzc2FnZX0iKQ0KICAgICAgICAgICAgZXhpdCgxKQ0KDQogICAgICAgIHYgPSB2LnNwbGl0KCJcbiIpDQoNCiAgICAgICAgd2l0aCBvcGVuKEdJVEhVQl9FTlYsICJhIikgYXMgZjoNCiAgICAgICAgICAgIGlmIGxlbih2KSA9PSAxOg0KICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7a309e3ZbMF19XG4iKQ0KICAgICAgICAgICAgZWxzZToNCiAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiB2Og0KICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbGluZS5zdHJpcCgpICE9IERFTElNSVRFUg0KICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7a308PHtERUxJTUlURVJ9XG4iKQ0KICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHY6DQogICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7bGluZX1cbiIpDQogICAgICAgICAgICAgICAgZi53cml0ZShmIntERUxJTUlURVJ9XG4iKQ0KDQogICAgICAgIHByaW50KGYie2t9IHdyaXR0ZW4gdG8gR0lUSFVCX0VOViIpDQoNCg0KaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoNCiAgICBzZXRfZW52KHN5cy5hcmd2WzFdKQ0K - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: fetch-depth: 0 diff --git a/.github/workflows/test_publish_to_testpypi.yml b/.github/workflows/test_publish_to_testpypi.yml index 5c4de3a..c5b410e 100644 --- a/.github/workflows/test_publish_to_testpypi.yml +++ b/.github/workflows/test_publish_to_testpypi.yml @@ -18,4 +18,4 @@ jobs: upload_to_pypi: 'true' timeout-minutes: 30 secrets: - pypi_token: ${{ secrets.TEST_PYPI_API_TOKEN }} \ No newline at end of file + pypi_token: ${{ secrets.TEST_PYPI_API_TOKEN }} diff --git a/.github/workflows/tox.yml b/.github/workflows/tox.yml index aed72d9..f1146a0 100644 --- a/.github/workflows/tox.yml +++ b/.github/workflows/tox.yml @@ -125,7 +125,7 @@ jobs: python-version: '3.12' - run: echo $TOX_MATRIX_SCRIPT | base64 --decode > tox_matrix.py env: - TOX_MATRIX_SCRIPT: IyAvLy8gc2NyaXB0CiMgcmVxdWlyZXMtcHl0aG9uID0gIj09My4xMiIKIyBkZXBlbmRlbmNpZXMgPSBbCiMgICAgICJjbGljaz09OC4yLjEiLAojICAgICAicHl5YW1sPT02LjAuMiIsCiMgXQojIC8vLwppbXBvcnQganNvbgppbXBvcnQgb3MKaW1wb3J0IHJlCgppbXBvcnQgY2xpY2sKaW1wb3J0IHlhbWwKCgpAY2xpY2suY29tbWFuZCgpCkBjbGljay5vcHRpb24oIi0tZW52cyIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tbGlicmFyaWVzIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1wb3NhcmdzIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS10b3hkZXBzIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS10b3hhcmdzIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1weXRlc3QiLCBkZWZhdWx0PSJ0cnVlIikKQGNsaWNrLm9wdGlvbigiLS1weXRlc3QtcmVzdWx0cy1zdW1tYXJ5IiwgZGVmYXVsdD0iZmFsc2UiKQpAY2xpY2sub3B0aW9uKCItLWNvdmVyYWdlIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1jb25kYSIsIGRlZmF1bHQ9ImF1dG8iKQpAY2xpY2sub3B0aW9uKCItLXNldGVudiIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tZGlzcGxheSIsIGRlZmF1bHQ9ImZhbHNlIikKQGNsaWNrLm9wdGlvbigiLS1jYWNoZS1wYXRoIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1jYWNoZS1rZXkiLCBkZWZhdWx0PSIiKQpAY2xpY2sub3B0aW9uKCItLWNhY2hlLXJlc3RvcmUta2V5cyIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tYXJ0aWZhY3QtcGF0aCIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tcnVucy1vbiIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tZGVmYXVsdC1weXRob24iLCBkZWZhdWx0PSIiKQpAY2xpY2sub3B0aW9uKCItLXRpbWVvdXQtbWludXRlcyIsIGRlZmF1bHQ9IjM2MCIpCmRlZiBsb2FkX3RveF90YXJnZXRzKGVudnMsIGxpYnJhcmllcywgcG9zYXJncywgdG94ZGVwcywgdG94YXJncywgcHl0ZXN0LCBweXRlc3RfcmVzdWx0c19zdW1tYXJ5LAogICAgICAgICAgICAgICAgICAgICBjb3ZlcmFnZSwgY29uZGEsIHNldGVudiwgZGlzcGxheSwgY2FjaGVfcGF0aCwgY2FjaGVfa2V5LAogICAgICAgICAgICAgICAgICAgICBjYWNoZV9yZXN0b3JlX2tleXMsIGFydGlmYWN0X3BhdGgsIHJ1bnNfb24sIGRlZmF1bHRfcHl0aG9uLCB0aW1lb3V0X21pbnV0ZXMpOgogICAgIiIiU2NyaXB0IHRvIGxvYWQgdG94IHRhcmdldHMgZm9yIEdpdEh1YiBBY3Rpb25zIHdvcmtmbG93LiIiIgogICAgIyBMb2FkIGVudnMgY29uZmlnCiAgICBlbnZzID0geWFtbC5sb2FkKGVudnMsIExvYWRlcj15YW1sLkJhc2VMb2FkZXIpCiAgICBwcmludChqc29uLmR1bXBzKGVudnMsIGluZGVudD0yKSkKCiAgICAjIExvYWQgZ2xvYmFsIGxpYnJhcmllcyBjb25maWcKICAgIGdsb2JhbF9saWJyYXJpZXMgPSB7CiAgICAgICAgImJyZXciOiBbXSwKICAgICAgICAiYnJldy1jYXNrIjogW10sCiAgICAgICAgImFwdCI6IFtdLAogICAgICAgICJjaG9jbyI6IFtdLAogICAgfQogICAgbGlicmFyaWVzID0geWFtbC5sb2FkKGxpYnJhcmllcywgTG9hZGVyPXlhbWwuQmFzZUxvYWRlcikKICAgIGlmIGxpYnJhcmllcyBpcyBub3QgTm9uZToKICAgICAgICBnbG9iYWxfbGlicmFyaWVzLnVwZGF0ZShsaWJyYXJpZXMpCiAgICBwcmludChqc29uLmR1bXBzKGdsb2JhbF9saWJyYXJpZXMsIGluZGVudD0yKSkKCiAgICAjIERlZmF1bHQgaW1hZ2VzIHRvIHVzZSBmb3IgcnVubmVycwogICAgZGVmYXVsdF9ydW5zX29uID0gewogICAgICAgICJsaW51eCI6ICJ1YnVudHUtbGF0ZXN0IiwKICAgICAgICAibWFjb3MiOiAibWFjb3MtbGF0ZXN0IiwKICAgICAgICAid2luZG93cyI6ICJ3aW5kb3dzLWxhdGVzdCIsCiAgICB9CiAgICBjdXN0b21fcnVuc19vbiA9IHlhbWwubG9hZChydW5zX29uLCBMb2FkZXI9eWFtbC5CYXNlTG9hZGVyKQogICAgaWYgaXNpbnN0YW5jZShjdXN0b21fcnVuc19vbiwgZGljdCk6CiAgICAgICAgZGVmYXVsdF9ydW5zX29uLnVwZGF0ZShjdXN0b21fcnVuc19vbikKICAgIHByaW50KGpzb24uZHVtcHMoZGVmYXVsdF9ydW5zX29uLCBpbmRlbnQ9MikpCgogICAgIyBEZWZhdWx0IHN0cmluZyBwYXJhbWV0ZXJzIHdoaWNoIGNhbiBiZSBvdmVyd3JpdHRlbiBieSBlYWNoIGVudgogICAgc3RyaW5nX3BhcmFtZXRlcnMgPSB7CiAgICAgICAgInBvc2FyZ3MiOiBwb3NhcmdzLAogICAgICAgICJ0b3hkZXBzIjogdG94ZGVwcywKICAgICAgICAidG94YXJncyI6IHRveGFyZ3MsCiAgICAgICAgInB5dGVzdCI6IHB5dGVzdCwKICAgICAgICAicHl0ZXN0LXJlc3VsdHMtc3VtbWFyeSI6IHB5dGVzdF9yZXN1bHRzX3N1bW1hcnksCiAgICAgICAgImNvdmVyYWdlIjogY292ZXJhZ2UsCiAgICAgICAgImNvbmRhIjogY29uZGEsCiAgICAgICAgInNldGVudiI6IHNldGVudiwKICAgICAgICAiZGlzcGxheSI6IGRpc3BsYXksCiAgICAgICAgImNhY2hlLXBhdGgiOiBjYWNoZV9wYXRoLAogICAgICAgICJjYWNoZS1rZXkiOiBjYWNoZV9rZXksCiAgICAgICAgImNhY2hlLXJlc3RvcmUta2V5cyI6IGNhY2hlX3Jlc3RvcmVfa2V5cywKICAgICAgICAiYXJ0aWZhY3QtcGF0aCI6IGFydGlmYWN0X3BhdGgsCiAgICAgICAgInRpbWVvdXQtbWludXRlcyI6IHRpbWVvdXRfbWludXRlcywKICAgIH0KCiAgICAjIENyZWF0ZSBtYXRyaXgKICAgIG1hdHJpeCA9IHsiaW5jbHVkZSI6IFtdfQogICAgZm9yIGVudiBpbiBlbnZzOgogICAgICAgIG1hdHJpeFsiaW5jbHVkZSJdLmFwcGVuZChnZXRfbWF0cml4X2l0ZW0oCiAgICAgICAgICAgIGVudiwKICAgICAgICAgICAgZ2xvYmFsX2xpYnJhcmllcz1nbG9iYWxfbGlicmFyaWVzLAogICAgICAgICAgICBnbG9iYWxfc3RyaW5nX3BhcmFtZXRlcnM9c3RyaW5nX3BhcmFtZXRlcnMsCiAgICAgICAgICAgIHJ1bnNfb249ZGVmYXVsdF9ydW5zX29uLAogICAgICAgICAgICBkZWZhdWx0X3B5dGhvbj1kZWZhdWx0X3B5dGhvbiwKICAgICAgICApKQoKICAgICMgT3V0cHV0IG1hdHJpeAogICAgcHJpbnQoanNvbi5kdW1wcyhtYXRyaXgsIGluZGVudD0yKSkKICAgIHdpdGggb3Blbihvcy5lbnZpcm9uWyJHSVRIVUJfT1VUUFVUIl0sICJhIikgYXMgZjoKICAgICAgICBmLndyaXRlKGYibWF0cml4PXtqc29uLmR1bXBzKG1hdHJpeCl9XG4iKQoKCmRlZiBnZXRfbWF0cml4X2l0ZW0oZW52LCBnbG9iYWxfbGlicmFyaWVzLCBnbG9iYWxfc3RyaW5nX3BhcmFtZXRlcnMsCiAgICAgICAgICAgICAgICAgICAgcnVuc19vbiwgZGVmYXVsdF9weXRob24pOgoKICAgICMgZGVmaW5lIHNwZWMgZm9yIGVhY2ggbWF0cml4IGluY2x1ZGUgKCsgZ2xvYmFsX3N0cmluZ19wYXJhbWV0ZXJzKQogICAgaXRlbSA9IHsKICAgICAgICAib3MiOiBOb25lLAogICAgICAgICJ0b3hlbnYiOiBOb25lLAogICAgICAgICJweXRob25fdmVyc2lvbiI6IE5vbmUsCiAgICAgICAgIm5hbWUiOiBOb25lLAogICAgICAgICJweXRlc3RfZmxhZyI6IE5vbmUsCiAgICAgICAgImxpYnJhcmllc19icmV3IjogTm9uZSwKICAgICAgICAibGlicmFyaWVzX2JyZXdfY2FzayI6IE5vbmUsCiAgICAgICAgImxpYnJhcmllc19hcHQiOiBOb25lLAogICAgICAgICJsaWJyYXJpZXNfY2hvY28iOiBOb25lLAogICAgICAgICJjYWNoZS1wYXRoIjogTm9uZSwKICAgICAgICAiY2FjaGUta2V5IjogTm9uZSwKICAgICAgICAiY2FjaGUtcmVzdG9yZS1rZXlzIjogTm9uZSwKICAgICAgICAiYXJ0aWZhY3QtbmFtZSI6IE5vbmUsCiAgICAgICAgImFydGlmYWN0LXBhdGgiOiBOb25lLAogICAgICAgICJ0aW1lb3V0LW1pbnV0ZXMiOiBOb25lLAogICAgfQogICAgZm9yIHN0cmluZ19wYXJhbSwgZGVmYXVsdCBpbiBnbG9iYWxfc3RyaW5nX3BhcmFtZXRlcnMuaXRlbXMoKToKICAgICAgICBlbnZfdmFsdWUgPSBlbnYuZ2V0KHN0cmluZ19wYXJhbSkKICAgICAgICBpdGVtW3N0cmluZ19wYXJhbV0gPSBkZWZhdWx0IGlmIGVudl92YWx1ZSBpcyBOb25lIGVsc2UgZW52X3ZhbHVlCgogICAgIyBzZXQgb3MgYW5kIHRveGVudgogICAgZm9yIGssIHYgaW4gcnVuc19vbi5pdGVtcygpOgogICAgICAgIGlmIGsgaW4gZW52OgogICAgICAgICAgICBwbGF0Zm9ybSA9IGsKICAgICAgICAgICAgaXRlbVsib3MiXSA9IGVudi5nZXQoInJ1bnMtb24iLCB2KQogICAgICAgICAgICBpdGVtWyJ0b3hlbnYiXSA9IGVudltrXQogICAgYXNzZXJ0IGl0ZW1bIm9zIl0gaXMgbm90IE5vbmUgYW5kIGl0ZW1bInRveGVudiJdIGlzIG5vdCBOb25lCgogICAgIyBzZXQgcHl0aG9uX3ZlcnNpb24KICAgIHB5dGhvbl92ZXJzaW9uID0gZW52LmdldCgicHl0aG9uLXZlcnNpb24iKQogICAgbSA9IHJlLnNlYXJjaCgiXnB5KDJ8MykoWzAtOV0rdD8pIiwgaXRlbVsidG94ZW52Il0pCiAgICBpZiBweXRob25fdmVyc2lvbiBpcyBub3QgTm9uZToKICAgICAgICBpdGVtWyJweXRob25fdmVyc2lvbiJdID0gcHl0aG9uX3ZlcnNpb24KICAgIGVsaWYgbSBpcyBub3QgTm9uZToKICAgICAgICBtYWpvciwgbWlub3IgPSBtLmdyb3VwcygpCiAgICAgICAgaXRlbVsicHl0aG9uX3ZlcnNpb24iXSA9IGYie21ham9yfS57bWlub3J9IgogICAgZWxzZToKICAgICAgICBpdGVtWyJweXRob25fdmVyc2lvbiJdID0gZW52LmdldCgiZGVmYXVsdF9weXRob24iKSBvciBkZWZhdWx0X3B5dGhvbgoKICAgICMgc2V0IG5hbWUKICAgIGl0ZW1bIm5hbWUiXSA9IGVudi5nZXQoIm5hbWUiKSBvciBmJ3tpdGVtWyJ0b3hlbnYiXX0gKHtpdGVtWyJvcyJdfSknCgogICAgIyBzZXQgYXJ0aWZhY3QtbmFtZSAocmVwbGFjZSBpbnZhbGlkIHBhdGggY2hhcmFjdGVycykKICAgIGl0ZW1bImFydGlmYWN0LW5hbWUiXSA9IHJlLnN1YihyIltcXCAvOjw+fCo/XCInXSIsICItIiwgaXRlbVsibmFtZSJdKQogICAgaXRlbVsiYXJ0aWZhY3QtbmFtZSJdID0gcmUuc3ViKHIiLSsiLCAiLSIsIGl0ZW1bImFydGlmYWN0LW5hbWUiXSkKCiAgICAjIHNldCBweXRlc3RfZmxhZwogICAgaXRlbVsicHl0ZXN0X2ZsYWciXSA9ICIiCiAgICBzZXAgPSByIlxcIiBpZiBwbGF0Zm9ybSA9PSAid2luZG93cyIgZWxzZSAiLyIKICAgIGlmIGl0ZW1bInB5dGVzdCJdID09ICJ0cnVlIiBhbmQgImNvZGVjb3YiIGluIGl0ZW0uZ2V0KCJjb3ZlcmFnZSIsICIiKToKICAgICAgICBpdGVtWyJweXRlc3RfZmxhZyJdICs9ICgKICAgICAgICAgICAgcmYiLS1jb3YtcmVwb3J0PXhtbDoke3tHSVRIVUJfV09SS1NQQUNFfX17c2VwfWNvdmVyYWdlLnhtbCAiKQogICAgaWYgaXRlbVsicHl0ZXN0Il0gPT0gInRydWUiIGFuZCBpdGVtWyJweXRlc3QtcmVzdWx0cy1zdW1tYXJ5Il0gPT0gInRydWUiOgogICAgICAgIGl0ZW1bInB5dGVzdF9mbGFnIl0gKz0gcmYiLS1qdW5pdHhtbCAke3tHSVRIVUJfV09SS1NQQUNFfX17c2VwfXJlc3VsdHMueG1sICIKCiAgICAjIHNldCBsaWJyYXJpZXMKICAgIGVudl9saWJyYXJpZXMgPSBlbnYuZ2V0KCJsaWJyYXJpZXMiKQogICAgaWYgaXNpbnN0YW5jZShlbnZfbGlicmFyaWVzLCBzdHIpIGFuZCBsZW4oZW52X2xpYnJhcmllcy5zdHJpcCgpKSA9PSAwOgogICAgICAgIGVudl9saWJyYXJpZXMgPSB7fSAgIyBubyBsaWJyYXJpZXMgcmVxdWVzdGVkIGZvciBlbnZpcm9ubWVudAogICAgbGlicmFyaWVzID0gZ2xvYmFsX2xpYnJhcmllcyBpZiBlbnZfbGlicmFyaWVzIGlzIE5vbmUgZWxzZSBlbnZfbGlicmFyaWVzCiAgICBmb3IgbWFuYWdlciBpbiBbImJyZXciLCAiYnJld19jYXNrIiwgImFwdCIsICJjaG9jbyJdOgogICAgICAgIGl0ZW1bZiJsaWJyYXJpZXNfe21hbmFnZXJ9Il0gPSAiICIuam9pbihsaWJyYXJpZXMuZ2V0KG1hbmFnZXIsIFtdKSkKCiAgICAjIHNldCAiYXV0byIgY29uZGEgdmFsdWUKICAgIGlmIGl0ZW1bImNvbmRhIl0gPT0gImF1dG8iOgogICAgICAgIGl0ZW1bImNvbmRhIl0gPSAidHJ1ZSIgaWYgImNvbmRhIiBpbiBpdGVtWyJ0b3hlbnYiXSBlbHNlICJmYWxzZSIKCiAgICAjIGluamVjdCB0b3hkZXBzIGZvciBjb25kYQogICAgaWYgaXRlbVsiY29uZGEiXSA9PSAidHJ1ZSIgYW5kICJ0b3gtY29uZGEiIG5vdCBpbiBpdGVtWyJ0b3hkZXBzIl0ubG93ZXIoKToKICAgICAgICBpdGVtWyJ0b3hkZXBzIl0gPSAoInRveC1jb25kYSAiICsgaXRlbVsidG94ZGVwcyJdKS5zdHJpcCgpCgogICAgIyBtYWtlIHRpbWVvdXQtbWludXRlcyBhIG51bWJlcgogICAgaXRlbVsidGltZW91dC1taW51dGVzIl0gPSBpbnQoaXRlbVsidGltZW91dC1taW51dGVzIl0pCgogICAgIyB2ZXJpZnkgdmFsdWVzCiAgICBhc3NlcnQgaXRlbVsicHl0ZXN0Il0gaW4geyJ0cnVlIiwgImZhbHNlIn0KICAgIGFzc2VydCBpdGVtWyJjb25kYSJdIGluIHsidHJ1ZSIsICJmYWxzZSJ9CiAgICBhc3NlcnQgaXRlbVsiZGlzcGxheSJdIGluIHsidHJ1ZSIsICJmYWxzZSJ9CgogICAgcmV0dXJuIGl0ZW0KCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgbG9hZF90b3hfdGFyZ2V0cygpCg== + TOX_MATRIX_SCRIPT: IyAvLy8gc2NyaXB0DQojIHJlcXVpcmVzLXB5dGhvbiA9ICI9PTMuMTIiDQojIGRlcGVuZGVuY2llcyA9IFsNCiMgICAgICJjbGljaz09OC4yLjEiLA0KIyAgICAgInB5eWFtbD09Ni4wLjIiLA0KIyBdDQojIC8vLw0KaW1wb3J0IGpzb24NCmltcG9ydCBvcw0KaW1wb3J0IHJlDQoNCmltcG9ydCBjbGljaw0KaW1wb3J0IHlhbWwNCg0KDQpAY2xpY2suY29tbWFuZCgpDQpAY2xpY2sub3B0aW9uKCItLWVudnMiLCBkZWZhdWx0PSIiKQ0KQGNsaWNrLm9wdGlvbigiLS1saWJyYXJpZXMiLCBkZWZhdWx0PSIiKQ0KQGNsaWNrLm9wdGlvbigiLS1wb3NhcmdzIiwgZGVmYXVsdD0iIikNCkBjbGljay5vcHRpb24oIi0tdG94ZGVwcyIsIGRlZmF1bHQ9IiIpDQpAY2xpY2sub3B0aW9uKCItLXRveGFyZ3MiLCBkZWZhdWx0PSIiKQ0KQGNsaWNrLm9wdGlvbigiLS1weXRlc3QiLCBkZWZhdWx0PSJ0cnVlIikNCkBjbGljay5vcHRpb24oIi0tcHl0ZXN0LXJlc3VsdHMtc3VtbWFyeSIsIGRlZmF1bHQ9ImZhbHNlIikNCkBjbGljay5vcHRpb24oIi0tY292ZXJhZ2UiLCBkZWZhdWx0PSIiKQ0KQGNsaWNrLm9wdGlvbigiLS1jb25kYSIsIGRlZmF1bHQ9ImF1dG8iKQ0KQGNsaWNrLm9wdGlvbigiLS1zZXRlbnYiLCBkZWZhdWx0PSIiKQ0KQGNsaWNrLm9wdGlvbigiLS1kaXNwbGF5IiwgZGVmYXVsdD0iZmFsc2UiKQ0KQGNsaWNrLm9wdGlvbigiLS1jYWNoZS1wYXRoIiwgZGVmYXVsdD0iIikNCkBjbGljay5vcHRpb24oIi0tY2FjaGUta2V5IiwgZGVmYXVsdD0iIikNCkBjbGljay5vcHRpb24oIi0tY2FjaGUtcmVzdG9yZS1rZXlzIiwgZGVmYXVsdD0iIikNCkBjbGljay5vcHRpb24oIi0tYXJ0aWZhY3QtcGF0aCIsIGRlZmF1bHQ9IiIpDQpAY2xpY2sub3B0aW9uKCItLXJ1bnMtb24iLCBkZWZhdWx0PSIiKQ0KQGNsaWNrLm9wdGlvbigiLS1kZWZhdWx0LXB5dGhvbiIsIGRlZmF1bHQ9IiIpDQpAY2xpY2sub3B0aW9uKCItLXRpbWVvdXQtbWludXRlcyIsIGRlZmF1bHQ9IjM2MCIpDQpkZWYgbG9hZF90b3hfdGFyZ2V0cyhlbnZzLCBsaWJyYXJpZXMsIHBvc2FyZ3MsIHRveGRlcHMsIHRveGFyZ3MsIHB5dGVzdCwgcHl0ZXN0X3Jlc3VsdHNfc3VtbWFyeSwNCiAgICAgICAgICAgICAgICAgICAgIGNvdmVyYWdlLCBjb25kYSwgc2V0ZW52LCBkaXNwbGF5LCBjYWNoZV9wYXRoLCBjYWNoZV9rZXksDQogICAgICAgICAgICAgICAgICAgICBjYWNoZV9yZXN0b3JlX2tleXMsIGFydGlmYWN0X3BhdGgsIHJ1bnNfb24sIGRlZmF1bHRfcHl0aG9uLCB0aW1lb3V0X21pbnV0ZXMpOg0KICAgICIiIlNjcmlwdCB0byBsb2FkIHRveCB0YXJnZXRzIGZvciBHaXRIdWIgQWN0aW9ucyB3b3JrZmxvdy4iIiINCiAgICAjIExvYWQgZW52cyBjb25maWcNCiAgICBlbnZzID0geWFtbC5sb2FkKGVudnMsIExvYWRlcj15YW1sLkJhc2VMb2FkZXIpDQogICAgcHJpbnQoanNvbi5kdW1wcyhlbnZzLCBpbmRlbnQ9MikpDQoNCiAgICAjIExvYWQgZ2xvYmFsIGxpYnJhcmllcyBjb25maWcNCiAgICBnbG9iYWxfbGlicmFyaWVzID0gew0KICAgICAgICAiYnJldyI6IFtdLA0KICAgICAgICAiYnJldy1jYXNrIjogW10sDQogICAgICAgICJhcHQiOiBbXSwNCiAgICAgICAgImNob2NvIjogW10sDQogICAgfQ0KICAgIGxpYnJhcmllcyA9IHlhbWwubG9hZChsaWJyYXJpZXMsIExvYWRlcj15YW1sLkJhc2VMb2FkZXIpDQogICAgaWYgbGlicmFyaWVzIGlzIG5vdCBOb25lOg0KICAgICAgICBnbG9iYWxfbGlicmFyaWVzLnVwZGF0ZShsaWJyYXJpZXMpDQogICAgcHJpbnQoanNvbi5kdW1wcyhnbG9iYWxfbGlicmFyaWVzLCBpbmRlbnQ9MikpDQoNCiAgICAjIERlZmF1bHQgaW1hZ2VzIHRvIHVzZSBmb3IgcnVubmVycw0KICAgIGRlZmF1bHRfcnVuc19vbiA9IHsNCiAgICAgICAgImxpbnV4IjogInVidW50dS1sYXRlc3QiLA0KICAgICAgICAibWFjb3MiOiAibWFjb3MtbGF0ZXN0IiwNCiAgICAgICAgIndpbmRvd3MiOiAid2luZG93cy1sYXRlc3QiLA0KICAgIH0NCiAgICBjdXN0b21fcnVuc19vbiA9IHlhbWwubG9hZChydW5zX29uLCBMb2FkZXI9eWFtbC5CYXNlTG9hZGVyKQ0KICAgIGlmIGlzaW5zdGFuY2UoY3VzdG9tX3J1bnNfb24sIGRpY3QpOg0KICAgICAgICBkZWZhdWx0X3J1bnNfb24udXBkYXRlKGN1c3RvbV9ydW5zX29uKQ0KICAgIHByaW50KGpzb24uZHVtcHMoZGVmYXVsdF9ydW5zX29uLCBpbmRlbnQ9MikpDQoNCiAgICAjIERlZmF1bHQgc3RyaW5nIHBhcmFtZXRlcnMgd2hpY2ggY2FuIGJlIG92ZXJ3cml0dGVuIGJ5IGVhY2ggZW52DQogICAgc3RyaW5nX3BhcmFtZXRlcnMgPSB7DQogICAgICAgICJwb3NhcmdzIjogcG9zYXJncywNCiAgICAgICAgInRveGRlcHMiOiB0b3hkZXBzLA0KICAgICAgICAidG94YXJncyI6IHRveGFyZ3MsDQogICAgICAgICJweXRlc3QiOiBweXRlc3QsDQogICAgICAgICJweXRlc3QtcmVzdWx0cy1zdW1tYXJ5IjogcHl0ZXN0X3Jlc3VsdHNfc3VtbWFyeSwNCiAgICAgICAgImNvdmVyYWdlIjogY292ZXJhZ2UsDQogICAgICAgICJjb25kYSI6IGNvbmRhLA0KICAgICAgICAic2V0ZW52Ijogc2V0ZW52LA0KICAgICAgICAiZGlzcGxheSI6IGRpc3BsYXksDQogICAgICAgICJjYWNoZS1wYXRoIjogY2FjaGVfcGF0aCwNCiAgICAgICAgImNhY2hlLWtleSI6IGNhY2hlX2tleSwNCiAgICAgICAgImNhY2hlLXJlc3RvcmUta2V5cyI6IGNhY2hlX3Jlc3RvcmVfa2V5cywNCiAgICAgICAgImFydGlmYWN0LXBhdGgiOiBhcnRpZmFjdF9wYXRoLA0KICAgICAgICAidGltZW91dC1taW51dGVzIjogdGltZW91dF9taW51dGVzLA0KICAgIH0NCg0KICAgICMgQ3JlYXRlIG1hdHJpeA0KICAgIG1hdHJpeCA9IHsiaW5jbHVkZSI6IFtdfQ0KICAgIGZvciBlbnYgaW4gZW52czoNCiAgICAgICAgbWF0cml4WyJpbmNsdWRlIl0uYXBwZW5kKGdldF9tYXRyaXhfaXRlbSgNCiAgICAgICAgICAgIGVudiwNCiAgICAgICAgICAgIGdsb2JhbF9saWJyYXJpZXM9Z2xvYmFsX2xpYnJhcmllcywNCiAgICAgICAgICAgIGdsb2JhbF9zdHJpbmdfcGFyYW1ldGVycz1zdHJpbmdfcGFyYW1ldGVycywNCiAgICAgICAgICAgIHJ1bnNfb249ZGVmYXVsdF9ydW5zX29uLA0KICAgICAgICAgICAgZGVmYXVsdF9weXRob249ZGVmYXVsdF9weXRob24sDQogICAgICAgICkpDQoNCiAgICAjIE91dHB1dCBtYXRyaXgNCiAgICBwcmludChqc29uLmR1bXBzKG1hdHJpeCwgaW5kZW50PTIpKQ0KICAgIHdpdGggb3Blbihvcy5lbnZpcm9uWyJHSVRIVUJfT1VUUFVUIl0sICJhIikgYXMgZjoNCiAgICAgICAgZi53cml0ZShmIm1hdHJpeD17anNvbi5kdW1wcyhtYXRyaXgpfVxuIikNCg0KDQpkZWYgZ2V0X21hdHJpeF9pdGVtKGVudiwgZ2xvYmFsX2xpYnJhcmllcywgZ2xvYmFsX3N0cmluZ19wYXJhbWV0ZXJzLA0KICAgICAgICAgICAgICAgICAgICBydW5zX29uLCBkZWZhdWx0X3B5dGhvbik6DQoNCiAgICAjIGRlZmluZSBzcGVjIGZvciBlYWNoIG1hdHJpeCBpbmNsdWRlICgrIGdsb2JhbF9zdHJpbmdfcGFyYW1ldGVycykNCiAgICBpdGVtID0gew0KICAgICAgICAib3MiOiBOb25lLA0KICAgICAgICAidG94ZW52IjogTm9uZSwNCiAgICAgICAgInB5dGhvbl92ZXJzaW9uIjogTm9uZSwNCiAgICAgICAgIm5hbWUiOiBOb25lLA0KICAgICAgICAicHl0ZXN0X2ZsYWciOiBOb25lLA0KICAgICAgICAibGlicmFyaWVzX2JyZXciOiBOb25lLA0KICAgICAgICAibGlicmFyaWVzX2JyZXdfY2FzayI6IE5vbmUsDQogICAgICAgICJsaWJyYXJpZXNfYXB0IjogTm9uZSwNCiAgICAgICAgImxpYnJhcmllc19jaG9jbyI6IE5vbmUsDQogICAgICAgICJjYWNoZS1wYXRoIjogTm9uZSwNCiAgICAgICAgImNhY2hlLWtleSI6IE5vbmUsDQogICAgICAgICJjYWNoZS1yZXN0b3JlLWtleXMiOiBOb25lLA0KICAgICAgICAiYXJ0aWZhY3QtbmFtZSI6IE5vbmUsDQogICAgICAgICJhcnRpZmFjdC1wYXRoIjogTm9uZSwNCiAgICAgICAgInRpbWVvdXQtbWludXRlcyI6IE5vbmUsDQogICAgfQ0KICAgIGZvciBzdHJpbmdfcGFyYW0sIGRlZmF1bHQgaW4gZ2xvYmFsX3N0cmluZ19wYXJhbWV0ZXJzLml0ZW1zKCk6DQogICAgICAgIGVudl92YWx1ZSA9IGVudi5nZXQoc3RyaW5nX3BhcmFtKQ0KICAgICAgICBpdGVtW3N0cmluZ19wYXJhbV0gPSBkZWZhdWx0IGlmIGVudl92YWx1ZSBpcyBOb25lIGVsc2UgZW52X3ZhbHVlDQoNCiAgICAjIHNldCBvcyBhbmQgdG94ZW52DQogICAgZm9yIGssIHYgaW4gcnVuc19vbi5pdGVtcygpOg0KICAgICAgICBpZiBrIGluIGVudjoNCiAgICAgICAgICAgIHBsYXRmb3JtID0gaw0KICAgICAgICAgICAgaXRlbVsib3MiXSA9IGVudi5nZXQoInJ1bnMtb24iLCB2KQ0KICAgICAgICAgICAgaXRlbVsidG94ZW52Il0gPSBlbnZba10NCiAgICBhc3NlcnQgaXRlbVsib3MiXSBpcyBub3QgTm9uZSBhbmQgaXRlbVsidG94ZW52Il0gaXMgbm90IE5vbmUNCg0KICAgICMgc2V0IHB5dGhvbl92ZXJzaW9uDQogICAgcHl0aG9uX3ZlcnNpb24gPSBlbnYuZ2V0KCJweXRob24tdmVyc2lvbiIpDQogICAgbSA9IHJlLnNlYXJjaCgiXnB5KDJ8MykoWzAtOV0rdD8pIiwgaXRlbVsidG94ZW52Il0pDQogICAgaWYgcHl0aG9uX3ZlcnNpb24gaXMgbm90IE5vbmU6DQogICAgICAgIGl0ZW1bInB5dGhvbl92ZXJzaW9uIl0gPSBweXRob25fdmVyc2lvbg0KICAgIGVsaWYgbSBpcyBub3QgTm9uZToNCiAgICAgICAgbWFqb3IsIG1pbm9yID0gbS5ncm91cHMoKQ0KICAgICAgICBpdGVtWyJweXRob25fdmVyc2lvbiJdID0gZiJ7bWFqb3J9LnttaW5vcn0iDQogICAgZWxzZToNCiAgICAgICAgaXRlbVsicHl0aG9uX3ZlcnNpb24iXSA9IGVudi5nZXQoImRlZmF1bHRfcHl0aG9uIikgb3IgZGVmYXVsdF9weXRob24NCg0KICAgICMgc2V0IG5hbWUNCiAgICBpdGVtWyJuYW1lIl0gPSBlbnYuZ2V0KCJuYW1lIikgb3IgZid7aXRlbVsidG94ZW52Il19ICh7aXRlbVsib3MiXX0pJw0KDQogICAgIyBzZXQgYXJ0aWZhY3QtbmFtZSAocmVwbGFjZSBpbnZhbGlkIHBhdGggY2hhcmFjdGVycykNCiAgICBpdGVtWyJhcnRpZmFjdC1uYW1lIl0gPSByZS5zdWIociJbXFwgLzo8PnwqP1wiJ10iLCAiLSIsIGl0ZW1bIm5hbWUiXSkNCiAgICBpdGVtWyJhcnRpZmFjdC1uYW1lIl0gPSByZS5zdWIociItKyIsICItIiwgaXRlbVsiYXJ0aWZhY3QtbmFtZSJdKQ0KDQogICAgIyBzZXQgcHl0ZXN0X2ZsYWcNCiAgICBpdGVtWyJweXRlc3RfZmxhZyJdID0gIiINCiAgICBzZXAgPSByIlxcIiBpZiBwbGF0Zm9ybSA9PSAid2luZG93cyIgZWxzZSAiLyINCiAgICBpZiBpdGVtWyJweXRlc3QiXSA9PSAidHJ1ZSIgYW5kICJjb2RlY292IiBpbiBpdGVtLmdldCgiY292ZXJhZ2UiLCAiIik6DQogICAgICAgIGl0ZW1bInB5dGVzdF9mbGFnIl0gKz0gKA0KICAgICAgICAgICAgcmYiLS1jb3YtcmVwb3J0PXhtbDoke3tHSVRIVUJfV09SS1NQQUNFfX17c2VwfWNvdmVyYWdlLnhtbCAiKQ0KICAgIGlmIGl0ZW1bInB5dGVzdCJdID09ICJ0cnVlIiBhbmQgaXRlbVsicHl0ZXN0LXJlc3VsdHMtc3VtbWFyeSJdID09ICJ0cnVlIjoNCiAgICAgICAgaXRlbVsicHl0ZXN0X2ZsYWciXSArPSByZiItLWp1bml0eG1sICR7e0dJVEhVQl9XT1JLU1BBQ0V9fXtzZXB9cmVzdWx0cy54bWwgIg0KDQogICAgIyBzZXQgbGlicmFyaWVzDQogICAgZW52X2xpYnJhcmllcyA9IGVudi5nZXQoImxpYnJhcmllcyIpDQogICAgaWYgaXNpbnN0YW5jZShlbnZfbGlicmFyaWVzLCBzdHIpIGFuZCBsZW4oZW52X2xpYnJhcmllcy5zdHJpcCgpKSA9PSAwOg0KICAgICAgICBlbnZfbGlicmFyaWVzID0ge30gICMgbm8gbGlicmFyaWVzIHJlcXVlc3RlZCBmb3IgZW52aXJvbm1lbnQNCiAgICBsaWJyYXJpZXMgPSBnbG9iYWxfbGlicmFyaWVzIGlmIGVudl9saWJyYXJpZXMgaXMgTm9uZSBlbHNlIGVudl9saWJyYXJpZXMNCiAgICBmb3IgbWFuYWdlciBpbiBbImJyZXciLCAiYnJld19jYXNrIiwgImFwdCIsICJjaG9jbyJdOg0KICAgICAgICBpdGVtW2YibGlicmFyaWVzX3ttYW5hZ2VyfSJdID0gIiAiLmpvaW4obGlicmFyaWVzLmdldChtYW5hZ2VyLCBbXSkpDQoNCiAgICAjIHNldCAiYXV0byIgY29uZGEgdmFsdWUNCiAgICBpZiBpdGVtWyJjb25kYSJdID09ICJhdXRvIjoNCiAgICAgICAgaXRlbVsiY29uZGEiXSA9ICJ0cnVlIiBpZiAiY29uZGEiIGluIGl0ZW1bInRveGVudiJdIGVsc2UgImZhbHNlIg0KDQogICAgIyBpbmplY3QgdG94ZGVwcyBmb3IgY29uZGENCiAgICBpZiBpdGVtWyJjb25kYSJdID09ICJ0cnVlIiBhbmQgInRveC1jb25kYSIgbm90IGluIGl0ZW1bInRveGRlcHMiXS5sb3dlcigpOg0KICAgICAgICBpdGVtWyJ0b3hkZXBzIl0gPSAoInRveC1jb25kYSAiICsgaXRlbVsidG94ZGVwcyJdKS5zdHJpcCgpDQoNCiAgICAjIG1ha2UgdGltZW91dC1taW51dGVzIGEgbnVtYmVyDQogICAgaXRlbVsidGltZW91dC1taW51dGVzIl0gPSBpbnQoaXRlbVsidGltZW91dC1taW51dGVzIl0pDQoNCiAgICAjIHZlcmlmeSB2YWx1ZXMNCiAgICBhc3NlcnQgaXRlbVsicHl0ZXN0Il0gaW4geyJ0cnVlIiwgImZhbHNlIn0NCiAgICBhc3NlcnQgaXRlbVsiY29uZGEiXSBpbiB7InRydWUiLCAiZmFsc2UifQ0KICAgIGFzc2VydCBpdGVtWyJkaXNwbGF5Il0gaW4geyJ0cnVlIiwgImZhbHNlIn0NCg0KICAgIHJldHVybiBpdGVtDQoNCg0KaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoNCiAgICBsb2FkX3RveF90YXJnZXRzKCkNCg== - run: cat tox_matrix.py - id: set-outputs run: | @@ -208,7 +208,7 @@ jobs: pipx run set_env.py "${{ matrix.setenv }}" rm set_env.py env: - SET_ENV_SCRIPT: IyAvLy8gc2NyaXB0CiMgcmVxdWlyZXMtcHl0aG9uID0gIj09My4xMiIKIyBkZXBlbmRlbmNpZXMgPSBbCiMgICAgICJweXlhbWw9PTYuMC4yIiwKIyBdCiMgLy8vCmltcG9ydCBqc29uCmltcG9ydCBvcwppbXBvcnQgc3lzCgppbXBvcnQgeWFtbAoKR0lUSFVCX0VOViA9IG9zLmdldGVudigiR0lUSFVCX0VOViIpCmlmIEdJVEhVQl9FTlYgaXMgTm9uZToKICAgIHJhaXNlIFZhbHVlRXJyb3IoIkdJVEhVQl9FTlYgbm90IHNldC4gTXVzdCBiZSBydW4gaW5zaWRlIEdpdEh1YiBBY3Rpb25zLiIpCgpERUxJTUlURVIgPSAiRU9GIgoKCmRlZiBzZXRfZW52KGVudik6CgogICAgZW52ID0geWFtbC5sb2FkKGVudiwgTG9hZGVyPXlhbWwuQmFzZUxvYWRlcikKICAgIHByaW50KGpzb24uZHVtcHMoZW52LCBpbmRlbnQ9MikpCgogICAgaWYgbm90IGlzaW5zdGFuY2UoZW52LCBkaWN0KToKICAgICAgICB0aXRsZSA9ICJgZW52YCBtdXN0IGJlIG1hcHBpbmciCiAgICAgICAgbWVzc2FnZSA9IGYiYGVudmAgbXVzdCBiZSBtYXBwaW5nIG9mIGVudiB2YXJpYWJsZXMgdG8gdmFsdWVzLCBnb3QgdHlwZSB7dHlwZShlbnYpfSIKICAgICAgICBwcmludChmIjo6ZXJyb3IgdGl0bGU9e3RpdGxlfTo6e21lc3NhZ2V9IikKICAgICAgICBleGl0KDEpCgogICAgZm9yIGssIHYgaW4gZW52Lml0ZW1zKCk6CgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHYsIHN0cik6CiAgICAgICAgICAgIHRpdGxlID0gImBlbnZgIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MiCiAgICAgICAgICAgIG1lc3NhZ2UgPSBmImBlbnZgIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MsIGJ1dCB2YWx1ZSBvZiB7a30gaGFzIHR5cGUge3R5cGUodil9IgogICAgICAgICAgICBwcmludChmIjo6ZXJyb3IgdGl0bGU9e3RpdGxlfTo6e21lc3NhZ2V9IikKICAgICAgICAgICAgZXhpdCgxKQoKICAgICAgICB2ID0gdi5zcGxpdCgiXG4iKQoKICAgICAgICB3aXRoIG9wZW4oR0lUSFVCX0VOViwgImEiKSBhcyBmOgogICAgICAgICAgICBpZiBsZW4odikgPT0gMToKICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7a309e3ZbMF19XG4iKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gdjoKICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbGluZS5zdHJpcCgpICE9IERFTElNSVRFUgogICAgICAgICAgICAgICAgZi53cml0ZShmIntrfTw8e0RFTElNSVRFUn1cbiIpCiAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiB2OgogICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7bGluZX1cbiIpCiAgICAgICAgICAgICAgICBmLndyaXRlKGYie0RFTElNSVRFUn1cbiIpCgogICAgICAgIHByaW50KGYie2t9IHdyaXR0ZW4gdG8gR0lUSFVCX0VOViIpCgoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIHNldF9lbnYoc3lzLmFyZ3ZbMV0pCg== + SET_ENV_SCRIPT: IyAvLy8gc2NyaXB0DQojIHJlcXVpcmVzLXB5dGhvbiA9ICI9PTMuMTIiDQojIGRlcGVuZGVuY2llcyA9IFsNCiMgICAgICJweXlhbWw9PTYuMC4yIiwNCiMgXQ0KIyAvLy8NCmltcG9ydCBqc29uDQppbXBvcnQgb3MNCmltcG9ydCBzeXMNCg0KaW1wb3J0IHlhbWwNCg0KR0lUSFVCX0VOViA9IG9zLmdldGVudigiR0lUSFVCX0VOViIpDQppZiBHSVRIVUJfRU5WIGlzIE5vbmU6DQogICAgcmFpc2UgVmFsdWVFcnJvcigiR0lUSFVCX0VOViBub3Qgc2V0LiBNdXN0IGJlIHJ1biBpbnNpZGUgR2l0SHViIEFjdGlvbnMuIikNCg0KREVMSU1JVEVSID0gIkVPRiINCg0KDQpkZWYgc2V0X2VudihlbnYpOg0KDQogICAgZW52ID0geWFtbC5sb2FkKGVudiwgTG9hZGVyPXlhbWwuQmFzZUxvYWRlcikNCiAgICBwcmludChqc29uLmR1bXBzKGVudiwgaW5kZW50PTIpKQ0KDQogICAgaWYgbm90IGlzaW5zdGFuY2UoZW52LCBkaWN0KToNCiAgICAgICAgdGl0bGUgPSAiYGVudmAgbXVzdCBiZSBtYXBwaW5nIg0KICAgICAgICBtZXNzYWdlID0gZiJgZW52YCBtdXN0IGJlIG1hcHBpbmcgb2YgZW52IHZhcmlhYmxlcyB0byB2YWx1ZXMsIGdvdCB0eXBlIHt0eXBlKGVudil9Ig0KICAgICAgICBwcmludChmIjo6ZXJyb3IgdGl0bGU9e3RpdGxlfTo6e21lc3NhZ2V9IikNCiAgICAgICAgZXhpdCgxKQ0KDQogICAgZm9yIGssIHYgaW4gZW52Lml0ZW1zKCk6DQoNCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uodiwgc3RyKToNCiAgICAgICAgICAgIHRpdGxlID0gImBlbnZgIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MiDQogICAgICAgICAgICBtZXNzYWdlID0gZiJgZW52YCB2YWx1ZXMgbXVzdCBiZSBzdHJpbmdzLCBidXQgdmFsdWUgb2Yge2t9IGhhcyB0eXBlIHt0eXBlKHYpfSINCiAgICAgICAgICAgIHByaW50KGYiOjplcnJvciB0aXRsZT17dGl0bGV9Ojp7bWVzc2FnZX0iKQ0KICAgICAgICAgICAgZXhpdCgxKQ0KDQogICAgICAgIHYgPSB2LnNwbGl0KCJcbiIpDQoNCiAgICAgICAgd2l0aCBvcGVuKEdJVEhVQl9FTlYsICJhIikgYXMgZjoNCiAgICAgICAgICAgIGlmIGxlbih2KSA9PSAxOg0KICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7a309e3ZbMF19XG4iKQ0KICAgICAgICAgICAgZWxzZToNCiAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiB2Og0KICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbGluZS5zdHJpcCgpICE9IERFTElNSVRFUg0KICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7a308PHtERUxJTUlURVJ9XG4iKQ0KICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHY6DQogICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7bGluZX1cbiIpDQogICAgICAgICAgICAgICAgZi53cml0ZShmIntERUxJTUlURVJ9XG4iKQ0KDQogICAgICAgIHByaW50KGYie2t9IHdyaXR0ZW4gdG8gR0lUSFVCX0VOViIpDQoNCg0KaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoNCiAgICBzZXRfZW52KHN5cy5hcmd2WzFdKQ0K - name: Setup headless display if: ${{ matrix.display == 'true' }} diff --git a/test_package/tests/test_publish_pypi.py b/test_package/tests/test_publish_pypi.py index c5cfe48..9f6ffeb 100644 --- a/test_package/tests/test_publish_pypi.py +++ b/test_package/tests/test_publish_pypi.py @@ -12,21 +12,21 @@ def test_build_package(): text=True ) assert result.returncode == 0, f"Build failed: {result.stderr}" - + # Check that distribution files were created dist_dir = Path("dist") assert dist_dir.exists(), "dist directory not created" - + dist_files = list(dist_dir.glob("*.whl")) + list(dist_dir.glob("*.tar.gz")) assert len(dist_files) > 0, "No distribution files created" def test_publish_to_test_pypi(): """Test publishing package to Test PyPI. - + This test requires TWINE_USERNAME and TWINE_PASSWORD environment variables to be set for Test PyPI authentication. - + To run this test: 1. Set TWINE_USERNAME (usually '__token__') 2. Set TWINE_PASSWORD (your Test PyPI API token) @@ -36,7 +36,7 @@ def test_publish_to_test_pypi(): if not os.getenv("TWINE_USERNAME") or not os.getenv("TWINE_PASSWORD"): import pytest pytest.skip("TWINE_USERNAME and TWINE_PASSWORD not set") - + # First build the package build_result = subprocess.run( [sys.executable, "-m", "build", "--outdir", "dist"], @@ -44,7 +44,7 @@ def test_publish_to_test_pypi(): text=True ) assert build_result.returncode == 0, f"Build failed: {build_result.stderr}" - + # Upload to Test PyPI upload_result = subprocess.run( [ @@ -56,7 +56,7 @@ def test_publish_to_test_pypi(): capture_output=True, text=True ) - + # Check result (skip-existing means it's ok if already uploaded) assert upload_result.returncode == 0, f"Upload failed: {upload_result.stderr}" print(f"Upload output: {upload_result.stdout}") @@ -70,7 +70,7 @@ def test_check_package_metadata(): capture_output=True, text=True ) - + # Check with twine result = subprocess.run( [sys.executable, "-m", "twine", "check", "dist/*"], diff --git a/tox.ini b/tox.ini index 6e29c2f..407ff4b 100644 --- a/tox.ini +++ b/tox.ini @@ -68,7 +68,7 @@ commands = description = test building and publishing to Test PyPI skip_install = false dependency_groups = publish -passenv = +passenv = TWINE_USERNAME TWINE_PASSWORD commands = From 596965ed9cf8999b9bdf3a0c1b9012b5fee02f48 Mon Sep 17 00:00:00 2001 From: Aditi Sah Date: Sat, 6 Dec 2025 13:18:54 +0530 Subject: [PATCH 4/4] Fix line endings in tool scripts to LF for CI compatibility --- .github/workflows/publish.yml | 4 ++-- .github/workflows/tox.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 857ed27..87a0d45 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -117,7 +117,7 @@ jobs: python-version: '3.12' - run: echo $LOAD_BUILD_TARGETS_SCRIPT | base64 --decode > load_build_targets.py env: - LOAD_BUILD_TARGETS_SCRIPT: IyAvLy8gc2NyaXB0DQojIHJlcXVpcmVzLXB5dGhvbiA9ICI9PTMuMTIiDQojIGRlcGVuZGVuY2llcyA9IFsNCiMgICAgICJjbGljaz09OC4yLjEiLA0KIyAgICAgInB5eWFtbD09Ni4wLjIiLA0KIyBdDQojIC8vLw0KaW1wb3J0IGpzb24NCmltcG9ydCBvcw0KaW1wb3J0IHJlDQoNCmltcG9ydCBjbGljaw0KaW1wb3J0IHlhbWwNCg0KTUFDSElORV9UWVBFID0gew0KICAgICJsaW51eCI6ICJ1YnVudHUtbGF0ZXN0IiwNCiAgICAibWFjb3MiOiAibWFjb3MtbGF0ZXN0IiwNCiAgICAid2luZG93cyI6ICJ3aW5kb3dzLWxhdGVzdCIsDQogICAgIndpbmRvd3MtYXJtIjogIndpbmRvd3MtMTEtYXJtIiwNCn0NCg0KQ0lCV19CVUlMRCA9IG9zLmVudmlyb24uZ2V0KCJDSUJXX0JVSUxEIiwgIioiKQ0KQ0lCV19BUkNIUyA9IG9zLmVudmlyb24uZ2V0KCJDSUJXX0FSQ0hTIiwgImF1dG8iKQ0KDQoNCkBjbGljay5jb21tYW5kKCkNCkBjbGljay5vcHRpb24oIi0tdGFyZ2V0cyIsIGRlZmF1bHQ9IiIpDQpkZWYgbG9hZF9idWlsZF90YXJnZXRzKHRhcmdldHMpOg0KICAgICIiIlNjcmlwdCB0byBsb2FkIGNpYnVpbGR3aGVlbCB0YXJnZXRzIGZvciBHaXRIdWIgQWN0aW9ucyB3b3JrZmxvdy4iIiINCiAgICAjIExvYWQgbGlzdCBvZiB0YXJnZXRzDQogICAgdGFyZ2V0cyA9IHlhbWwubG9hZCh0YXJnZXRzLCBMb2FkZXI9eWFtbC5CYXNlTG9hZGVyKQ0KICAgIHByaW50KGpzb24uZHVtcHModGFyZ2V0cywgaW5kZW50PTIpKQ0KDQogICAgIyBDcmVhdGUgbWF0cml4DQogICAgbWF0cml4ID0geyJpbmNsdWRlIjogW119DQogICAgZm9yIHRhcmdldCBpbiB0YXJnZXRzOg0KICAgICAgICBtYXRyaXhbImluY2x1ZGUiXS5hcHBlbmQoZ2V0X21hdHJpeF9pdGVtKHRhcmdldCkpDQoNCiAgICAjIE91dHB1dCBtYXRyaXgNCiAgICBwcmludChqc29uLmR1bXBzKG1hdHJpeCwgaW5kZW50PTIpKQ0KICAgIHdpdGggb3Blbihvcy5lbnZpcm9uWyJHSVRIVUJfT1VUUFVUIl0sICJhIikgYXMgZjoNCiAgICAgICAgZi53cml0ZShmIm1hdHJpeD17anNvbi5kdW1wcyhtYXRyaXgpfVxuIikNCg0KDQpkZWYgZ2V0X29zKHRhcmdldCk6DQogICAgaWYgIm1hY29zIiBpbiB0YXJnZXQ6DQogICAgICAgIHJldHVybiBNQUNISU5FX1RZUEVbIm1hY29zIl0NCiAgICBpZiAid2luX2FybSIgaW4gdGFyZ2V0Og0KICAgICAgICByZXR1cm4gTUFDSElORV9UWVBFWyJ3aW5kb3dzLWFybSJdDQogICAgaWYgIndpbiIgaW4gdGFyZ2V0Og0KICAgICAgICByZXR1cm4gTUFDSElORV9UWVBFWyJ3aW5kb3dzIl0NCiAgICByZXR1cm4gTUFDSElORV9UWVBFWyJsaW51eCJdDQoNCg0KZGVmIGdldF9jaWJ3X2J1aWxkKHRhcmdldCk6DQogICAgaWYgdGFyZ2V0IGluIHsibGludXgiLCAibWFjb3MiLCAid2luZG93cyJ9Og0KICAgICAgICByZXR1cm4gQ0lCV19CVUlMRA0KICAgIHJldHVybiB0YXJnZXQNCg0KDQpkZWYgZ2V0X2NpYndfYXJjaHModGFyZ2V0KToNCiAgICAiIiINCiAgICBIYW5kbGUgbm9uLW5hdGl2ZSBhcmNoaXRlY3R1cmVzDQoNCiAgICBjaWJ3IGFsbG93cyBydW5uaW5nIG5vbi1uYXRpdmUgYnVpbGRzIG9uIHZhcmlvdXMgcGxhdGZvcm1zOg0KICAgIGh0dHBzOi8vY2lidWlsZHdoZWVsLnB5cGEuaW8vZW4vc3RhYmxlL29wdGlvbnMvI2FyY2hzDQoNCiAgICBUaGlzIGxvZ2ljIG92ZXJyaWRlcyB0aGUgImF1dG8iIGZsYWcgYmFzZWQgb24gT1MgYW5kIGEgbGlzdCBvZiBzdXBwb3J0ZWQNCiAgICBub24tbmF0aXZlIGFyY2ggaWYgYSBub24tbmF0aXZlIGFyY2ggaXMgZ2l2ZW4gZm9yIGEgcGFydGljdWxhciBwbGF0Zm9ybSBpbg0KICAgIHRhcmdldHMsIHJhdGhlciB0aGFuIHRoZSB1c2VyIGhhdmluZyB0byBkbyB0aGlzIG1hbnVhbGx5Lg0KICAgICIiIg0KICAgIHBsYXRmb3JtX2FyY2hzID0gew0KICAgICAgICAjIFdlIG5vdyBjcm9zcyBjb21waWxlIHg4Nl82NCBvbiBhcm02NCBieSBkZWZhdWx0DQogICAgICAgICJtYWNvcyI6IFsidW5pdmVyc2FsMiIsICJ4ODZfNjQiXSwNCiAgICAgICAgIyBUaGlzIGlzIGEgbGlzdCBvZiBzdXBwb3J0ZWQgZXVtdWxhdGVkIGFyY2hlcyBvbiBsaW51eA0KICAgICAgICAibGludXgiOiBbImFhcmNoNjQiLCAicHBjNjRsZSIsICJzMzkweCIsICJhcm12N2wiXSwNCiAgICB9DQogICAgZm9yIHBsYXRmb3JtLCBhcmNocyBpbiBwbGF0Zm9ybV9hcmNocy5pdGVtcygpOg0KICAgICAgICBpZiBwbGF0Zm9ybSBpbiB0YXJnZXQ6DQogICAgICAgICAgICBmb3IgYXJjaCBpbiBhcmNoczoNCiAgICAgICAgICAgICAgICBpZiB0YXJnZXQuZW5kc3dpdGgoYXJjaCk6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBhcmNoDQoNCiAgICAjIElmIG5vIGV4cGxpY3QgYXJjaCBoYXMgYmVlbiBzcGVjaWZpZWQgYnVpbGQgYm90aCBhcm02NCBhbmQgeDg2XzY0IG9uIG1hY29zDQogICAgaWYgIm1hY29zIiBpbiB0YXJnZXQ6DQogICAgICAgIHJldHVybiBvcy5lbnZpcm9uLmdldCgiQ0lCV19BUkNIUyIsICJhcm02NCB4ODZfNjQiKQ0KDQogICAgcmV0dXJuIENJQldfQVJDSFMNCg0KDQpkZWYgZ2V0X2FydGlmYWN0X25hbWUodGFyZ2V0KToNCiAgICBhcnRpZmFjdF9uYW1lID0gcmUuc3ViKHIiW1xcIC86PD58Kj9cIiddIiwgIi0iLCB0YXJnZXQpDQogICAgYXJ0aWZhY3RfbmFtZSA9IHJlLnN1YihyIi0rIiwgIi0iLCBhcnRpZmFjdF9uYW1lKQ0KICAgIHJldHVybiBhcnRpZmFjdF9uYW1lDQoNCg0KZGVmIGdldF9tYXRyaXhfaXRlbSh0YXJnZXQpOg0KICAgIGV4dHJhX3RhcmdldF9hcmdzID0ge30NCiAgICBpZiBpc2luc3RhbmNlKHRhcmdldCwgZGljdCk6DQogICAgICAgIGV4dHJhX3RhcmdldF9hcmdzID0gdGFyZ2V0DQogICAgICAgIHRhcmdldCA9IGV4dHJhX3RhcmdldF9hcmdzLnBvcCgidGFyZ2V0IikNCiAgICByZXR1cm4gew0KICAgICAgICAidGFyZ2V0IjogdGFyZ2V0LA0KICAgICAgICAicnVucy1vbiI6IGdldF9vcyh0YXJnZXQpLA0KICAgICAgICAiQ0lCV19CVUlMRCI6IGdldF9jaWJ3X2J1aWxkKHRhcmdldCksDQogICAgICAgICJDSUJXX0FSQ0hTIjogZ2V0X2NpYndfYXJjaHModGFyZ2V0KSwNCiAgICAgICAgImFydGlmYWN0LW5hbWUiOiBnZXRfYXJ0aWZhY3RfbmFtZSh0YXJnZXQpLA0KICAgICAgICAqKmV4dHJhX3RhcmdldF9hcmdzLA0KICAgIH0NCg0KDQppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOg0KICAgIGxvYWRfYnVpbGRfdGFyZ2V0cygpDQo= + LOAD_BUILD_TARGETS_SCRIPT: IyAvLy8gc2NyaXB0CiMgcmVxdWlyZXMtcHl0aG9uID0gIj09My4xMiIKIyBkZXBlbmRlbmNpZXMgPSBbCiMgICAgICJjbGljaz09OC4yLjEiLAojICAgICAicHl5YW1sPT02LjAuMiIsCiMgXQojIC8vLwppbXBvcnQganNvbgppbXBvcnQgb3MKaW1wb3J0IHJlCgppbXBvcnQgY2xpY2sKaW1wb3J0IHlhbWwKCk1BQ0hJTkVfVFlQRSA9IHsKICAgICJsaW51eCI6ICJ1YnVudHUtbGF0ZXN0IiwKICAgICJtYWNvcyI6ICJtYWNvcy1sYXRlc3QiLAogICAgIndpbmRvd3MiOiAid2luZG93cy1sYXRlc3QiLAogICAgIndpbmRvd3MtYXJtIjogIndpbmRvd3MtMTEtYXJtIiwKfQoKQ0lCV19CVUlMRCA9IG9zLmVudmlyb24uZ2V0KCJDSUJXX0JVSUxEIiwgIioiKQpDSUJXX0FSQ0hTID0gb3MuZW52aXJvbi5nZXQoIkNJQldfQVJDSFMiLCAiYXV0byIpCgoKQGNsaWNrLmNvbW1hbmQoKQpAY2xpY2sub3B0aW9uKCItLXRhcmdldHMiLCBkZWZhdWx0PSIiKQpkZWYgbG9hZF9idWlsZF90YXJnZXRzKHRhcmdldHMpOgogICAgIiIiU2NyaXB0IHRvIGxvYWQgY2lidWlsZHdoZWVsIHRhcmdldHMgZm9yIEdpdEh1YiBBY3Rpb25zIHdvcmtmbG93LiIiIgogICAgIyBMb2FkIGxpc3Qgb2YgdGFyZ2V0cwogICAgdGFyZ2V0cyA9IHlhbWwubG9hZCh0YXJnZXRzLCBMb2FkZXI9eWFtbC5CYXNlTG9hZGVyKQogICAgcHJpbnQoanNvbi5kdW1wcyh0YXJnZXRzLCBpbmRlbnQ9MikpCgogICAgIyBDcmVhdGUgbWF0cml4CiAgICBtYXRyaXggPSB7ImluY2x1ZGUiOiBbXX0KICAgIGZvciB0YXJnZXQgaW4gdGFyZ2V0czoKICAgICAgICBtYXRyaXhbImluY2x1ZGUiXS5hcHBlbmQoZ2V0X21hdHJpeF9pdGVtKHRhcmdldCkpCgogICAgIyBPdXRwdXQgbWF0cml4CiAgICBwcmludChqc29uLmR1bXBzKG1hdHJpeCwgaW5kZW50PTIpKQogICAgd2l0aCBvcGVuKG9zLmVudmlyb25bIkdJVEhVQl9PVVRQVVQiXSwgImEiKSBhcyBmOgogICAgICAgIGYud3JpdGUoZiJtYXRyaXg9e2pzb24uZHVtcHMobWF0cml4KX1cbiIpCgoKZGVmIGdldF9vcyh0YXJnZXQpOgogICAgaWYgIm1hY29zIiBpbiB0YXJnZXQ6CiAgICAgICAgcmV0dXJuIE1BQ0hJTkVfVFlQRVsibWFjb3MiXQogICAgaWYgIndpbl9hcm0iIGluIHRhcmdldDoKICAgICAgICByZXR1cm4gTUFDSElORV9UWVBFWyJ3aW5kb3dzLWFybSJdCiAgICBpZiAid2luIiBpbiB0YXJnZXQ6CiAgICAgICAgcmV0dXJuIE1BQ0hJTkVfVFlQRVsid2luZG93cyJdCiAgICByZXR1cm4gTUFDSElORV9UWVBFWyJsaW51eCJdCgoKZGVmIGdldF9jaWJ3X2J1aWxkKHRhcmdldCk6CiAgICBpZiB0YXJnZXQgaW4geyJsaW51eCIsICJtYWNvcyIsICJ3aW5kb3dzIn06CiAgICAgICAgcmV0dXJuIENJQldfQlVJTEQKICAgIHJldHVybiB0YXJnZXQKCgpkZWYgZ2V0X2NpYndfYXJjaHModGFyZ2V0KToKICAgICIiIgogICAgSGFuZGxlIG5vbi1uYXRpdmUgYXJjaGl0ZWN0dXJlcwoKICAgIGNpYncgYWxsb3dzIHJ1bm5pbmcgbm9uLW5hdGl2ZSBidWlsZHMgb24gdmFyaW91cyBwbGF0Zm9ybXM6CiAgICBodHRwczovL2NpYnVpbGR3aGVlbC5weXBhLmlvL2VuL3N0YWJsZS9vcHRpb25zLyNhcmNocwoKICAgIFRoaXMgbG9naWMgb3ZlcnJpZGVzIHRoZSAiYXV0byIgZmxhZyBiYXNlZCBvbiBPUyBhbmQgYSBsaXN0IG9mIHN1cHBvcnRlZAogICAgbm9uLW5hdGl2ZSBhcmNoIGlmIGEgbm9uLW5hdGl2ZSBhcmNoIGlzIGdpdmVuIGZvciBhIHBhcnRpY3VsYXIgcGxhdGZvcm0gaW4KICAgIHRhcmdldHMsIHJhdGhlciB0aGFuIHRoZSB1c2VyIGhhdmluZyB0byBkbyB0aGlzIG1hbnVhbGx5LgogICAgIiIiCiAgICBwbGF0Zm9ybV9hcmNocyA9IHsKICAgICAgICAjIFdlIG5vdyBjcm9zcyBjb21waWxlIHg4Nl82NCBvbiBhcm02NCBieSBkZWZhdWx0CiAgICAgICAgIm1hY29zIjogWyJ1bml2ZXJzYWwyIiwgIng4Nl82NCJdLAogICAgICAgICMgVGhpcyBpcyBhIGxpc3Qgb2Ygc3VwcG9ydGVkIGV1bXVsYXRlZCBhcmNoZXMgb24gbGludXgKICAgICAgICAibGludXgiOiBbImFhcmNoNjQiLCAicHBjNjRsZSIsICJzMzkweCIsICJhcm12N2wiXSwKICAgIH0KICAgIGZvciBwbGF0Zm9ybSwgYXJjaHMgaW4gcGxhdGZvcm1fYXJjaHMuaXRlbXMoKToKICAgICAgICBpZiBwbGF0Zm9ybSBpbiB0YXJnZXQ6CiAgICAgICAgICAgIGZvciBhcmNoIGluIGFyY2hzOgogICAgICAgICAgICAgICAgaWYgdGFyZ2V0LmVuZHN3aXRoKGFyY2gpOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBhcmNoCgogICAgIyBJZiBubyBleHBsaWN0IGFyY2ggaGFzIGJlZW4gc3BlY2lmaWVkIGJ1aWxkIGJvdGggYXJtNjQgYW5kIHg4Nl82NCBvbiBtYWNvcwogICAgaWYgIm1hY29zIiBpbiB0YXJnZXQ6CiAgICAgICAgcmV0dXJuIG9zLmVudmlyb24uZ2V0KCJDSUJXX0FSQ0hTIiwgImFybTY0IHg4Nl82NCIpCgogICAgcmV0dXJuIENJQldfQVJDSFMKCgpkZWYgZ2V0X2FydGlmYWN0X25hbWUodGFyZ2V0KToKICAgIGFydGlmYWN0X25hbWUgPSByZS5zdWIociJbXFwgLzo8PnwqP1wiJ10iLCAiLSIsIHRhcmdldCkKICAgIGFydGlmYWN0X25hbWUgPSByZS5zdWIociItKyIsICItIiwgYXJ0aWZhY3RfbmFtZSkKICAgIHJldHVybiBhcnRpZmFjdF9uYW1lCgoKZGVmIGdldF9tYXRyaXhfaXRlbSh0YXJnZXQpOgogICAgZXh0cmFfdGFyZ2V0X2FyZ3MgPSB7fQogICAgaWYgaXNpbnN0YW5jZSh0YXJnZXQsIGRpY3QpOgogICAgICAgIGV4dHJhX3RhcmdldF9hcmdzID0gdGFyZ2V0CiAgICAgICAgdGFyZ2V0ID0gZXh0cmFfdGFyZ2V0X2FyZ3MucG9wKCJ0YXJnZXQiKQogICAgcmV0dXJuIHsKICAgICAgICAidGFyZ2V0IjogdGFyZ2V0LAogICAgICAgICJydW5zLW9uIjogZ2V0X29zKHRhcmdldCksCiAgICAgICAgIkNJQldfQlVJTEQiOiBnZXRfY2lid19idWlsZCh0YXJnZXQpLAogICAgICAgICJDSUJXX0FSQ0hTIjogZ2V0X2NpYndfYXJjaHModGFyZ2V0KSwKICAgICAgICAiYXJ0aWZhY3QtbmFtZSI6IGdldF9hcnRpZmFjdF9uYW1lKHRhcmdldCksCiAgICAgICAgKipleHRyYV90YXJnZXRfYXJncywKICAgIH0KCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgbG9hZF9idWlsZF90YXJnZXRzKCkK - id: set-outputs run: pipx run load_build_targets.py --targets "${{ inputs.targets }}" shell: sh @@ -197,7 +197,7 @@ jobs: rm set_env.py shell: sh env: - SET_ENV_SCRIPT: IyAvLy8gc2NyaXB0DQojIHJlcXVpcmVzLXB5dGhvbiA9ICI9PTMuMTIiDQojIGRlcGVuZGVuY2llcyA9IFsNCiMgICAgICJweXlhbWw9PTYuMC4yIiwNCiMgXQ0KIyAvLy8NCmltcG9ydCBqc29uDQppbXBvcnQgb3MNCmltcG9ydCBzeXMNCg0KaW1wb3J0IHlhbWwNCg0KR0lUSFVCX0VOViA9IG9zLmdldGVudigiR0lUSFVCX0VOViIpDQppZiBHSVRIVUJfRU5WIGlzIE5vbmU6DQogICAgcmFpc2UgVmFsdWVFcnJvcigiR0lUSFVCX0VOViBub3Qgc2V0LiBNdXN0IGJlIHJ1biBpbnNpZGUgR2l0SHViIEFjdGlvbnMuIikNCg0KREVMSU1JVEVSID0gIkVPRiINCg0KDQpkZWYgc2V0X2VudihlbnYpOg0KDQogICAgZW52ID0geWFtbC5sb2FkKGVudiwgTG9hZGVyPXlhbWwuQmFzZUxvYWRlcikNCiAgICBwcmludChqc29uLmR1bXBzKGVudiwgaW5kZW50PTIpKQ0KDQogICAgaWYgbm90IGlzaW5zdGFuY2UoZW52LCBkaWN0KToNCiAgICAgICAgdGl0bGUgPSAiYGVudmAgbXVzdCBiZSBtYXBwaW5nIg0KICAgICAgICBtZXNzYWdlID0gZiJgZW52YCBtdXN0IGJlIG1hcHBpbmcgb2YgZW52IHZhcmlhYmxlcyB0byB2YWx1ZXMsIGdvdCB0eXBlIHt0eXBlKGVudil9Ig0KICAgICAgICBwcmludChmIjo6ZXJyb3IgdGl0bGU9e3RpdGxlfTo6e21lc3NhZ2V9IikNCiAgICAgICAgZXhpdCgxKQ0KDQogICAgZm9yIGssIHYgaW4gZW52Lml0ZW1zKCk6DQoNCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uodiwgc3RyKToNCiAgICAgICAgICAgIHRpdGxlID0gImBlbnZgIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MiDQogICAgICAgICAgICBtZXNzYWdlID0gZiJgZW52YCB2YWx1ZXMgbXVzdCBiZSBzdHJpbmdzLCBidXQgdmFsdWUgb2Yge2t9IGhhcyB0eXBlIHt0eXBlKHYpfSINCiAgICAgICAgICAgIHByaW50KGYiOjplcnJvciB0aXRsZT17dGl0bGV9Ojp7bWVzc2FnZX0iKQ0KICAgICAgICAgICAgZXhpdCgxKQ0KDQogICAgICAgIHYgPSB2LnNwbGl0KCJcbiIpDQoNCiAgICAgICAgd2l0aCBvcGVuKEdJVEhVQl9FTlYsICJhIikgYXMgZjoNCiAgICAgICAgICAgIGlmIGxlbih2KSA9PSAxOg0KICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7a309e3ZbMF19XG4iKQ0KICAgICAgICAgICAgZWxzZToNCiAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiB2Og0KICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbGluZS5zdHJpcCgpICE9IERFTElNSVRFUg0KICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7a308PHtERUxJTUlURVJ9XG4iKQ0KICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHY6DQogICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7bGluZX1cbiIpDQogICAgICAgICAgICAgICAgZi53cml0ZShmIntERUxJTUlURVJ9XG4iKQ0KDQogICAgICAgIHByaW50KGYie2t9IHdyaXR0ZW4gdG8gR0lUSFVCX0VOViIpDQoNCg0KaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoNCiAgICBzZXRfZW52KHN5cy5hcmd2WzFdKQ0K + SET_ENV_SCRIPT: IyAvLy8gc2NyaXB0CiMgcmVxdWlyZXMtcHl0aG9uID0gIj09My4xMiIKIyBkZXBlbmRlbmNpZXMgPSBbCiMgICAgICJweXlhbWw9PTYuMC4yIiwKIyBdCiMgLy8vCmltcG9ydCBqc29uCmltcG9ydCBvcwppbXBvcnQgc3lzCgppbXBvcnQgeWFtbAoKR0lUSFVCX0VOViA9IG9zLmdldGVudigiR0lUSFVCX0VOViIpCmlmIEdJVEhVQl9FTlYgaXMgTm9uZToKICAgIHJhaXNlIFZhbHVlRXJyb3IoIkdJVEhVQl9FTlYgbm90IHNldC4gTXVzdCBiZSBydW4gaW5zaWRlIEdpdEh1YiBBY3Rpb25zLiIpCgpERUxJTUlURVIgPSAiRU9GIgoKCmRlZiBzZXRfZW52KGVudik6CgogICAgZW52ID0geWFtbC5sb2FkKGVudiwgTG9hZGVyPXlhbWwuQmFzZUxvYWRlcikKICAgIHByaW50KGpzb24uZHVtcHMoZW52LCBpbmRlbnQ9MikpCgogICAgaWYgbm90IGlzaW5zdGFuY2UoZW52LCBkaWN0KToKICAgICAgICB0aXRsZSA9ICJgZW52YCBtdXN0IGJlIG1hcHBpbmciCiAgICAgICAgbWVzc2FnZSA9IGYiYGVudmAgbXVzdCBiZSBtYXBwaW5nIG9mIGVudiB2YXJpYWJsZXMgdG8gdmFsdWVzLCBnb3QgdHlwZSB7dHlwZShlbnYpfSIKICAgICAgICBwcmludChmIjo6ZXJyb3IgdGl0bGU9e3RpdGxlfTo6e21lc3NhZ2V9IikKICAgICAgICBleGl0KDEpCgogICAgZm9yIGssIHYgaW4gZW52Lml0ZW1zKCk6CgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHYsIHN0cik6CiAgICAgICAgICAgIHRpdGxlID0gImBlbnZgIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MiCiAgICAgICAgICAgIG1lc3NhZ2UgPSBmImBlbnZgIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MsIGJ1dCB2YWx1ZSBvZiB7a30gaGFzIHR5cGUge3R5cGUodil9IgogICAgICAgICAgICBwcmludChmIjo6ZXJyb3IgdGl0bGU9e3RpdGxlfTo6e21lc3NhZ2V9IikKICAgICAgICAgICAgZXhpdCgxKQoKICAgICAgICB2ID0gdi5zcGxpdCgiXG4iKQoKICAgICAgICB3aXRoIG9wZW4oR0lUSFVCX0VOViwgImEiKSBhcyBmOgogICAgICAgICAgICBpZiBsZW4odikgPT0gMToKICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7a309e3ZbMF19XG4iKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gdjoKICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbGluZS5zdHJpcCgpICE9IERFTElNSVRFUgogICAgICAgICAgICAgICAgZi53cml0ZShmIntrfTw8e0RFTElNSVRFUn1cbiIpCiAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiB2OgogICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7bGluZX1cbiIpCiAgICAgICAgICAgICAgICBmLndyaXRlKGYie0RFTElNSVRFUn1cbiIpCgogICAgICAgIHByaW50KGYie2t9IHdyaXR0ZW4gdG8gR0lUSFVCX0VOViIpCgoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIHNldF9lbnYoc3lzLmFyZ3ZbMV0pCg== - name: Run cibuildwheel uses: pypa/cibuildwheel@63fd63b352a9a8bdcc24791c9dbee952ee9a8abc # v3.3.0 with: diff --git a/.github/workflows/tox.yml b/.github/workflows/tox.yml index 57f1fc1..b66ea46 100644 --- a/.github/workflows/tox.yml +++ b/.github/workflows/tox.yml @@ -125,7 +125,7 @@ jobs: python-version: '3.12' - run: echo $TOX_MATRIX_SCRIPT | base64 --decode > tox_matrix.py env: - TOX_MATRIX_SCRIPT: IyAvLy8gc2NyaXB0DQojIHJlcXVpcmVzLXB5dGhvbiA9ICI9PTMuMTIiDQojIGRlcGVuZGVuY2llcyA9IFsNCiMgICAgICJjbGljaz09OC4yLjEiLA0KIyAgICAgInB5eWFtbD09Ni4wLjIiLA0KIyBdDQojIC8vLw0KaW1wb3J0IGpzb24NCmltcG9ydCBvcw0KaW1wb3J0IHJlDQoNCmltcG9ydCBjbGljaw0KaW1wb3J0IHlhbWwNCg0KDQpAY2xpY2suY29tbWFuZCgpDQpAY2xpY2sub3B0aW9uKCItLWVudnMiLCBkZWZhdWx0PSIiKQ0KQGNsaWNrLm9wdGlvbigiLS1saWJyYXJpZXMiLCBkZWZhdWx0PSIiKQ0KQGNsaWNrLm9wdGlvbigiLS1wb3NhcmdzIiwgZGVmYXVsdD0iIikNCkBjbGljay5vcHRpb24oIi0tdG94ZGVwcyIsIGRlZmF1bHQ9IiIpDQpAY2xpY2sub3B0aW9uKCItLXRveGFyZ3MiLCBkZWZhdWx0PSIiKQ0KQGNsaWNrLm9wdGlvbigiLS1weXRlc3QiLCBkZWZhdWx0PSJ0cnVlIikNCkBjbGljay5vcHRpb24oIi0tcHl0ZXN0LXJlc3VsdHMtc3VtbWFyeSIsIGRlZmF1bHQ9ImZhbHNlIikNCkBjbGljay5vcHRpb24oIi0tY292ZXJhZ2UiLCBkZWZhdWx0PSIiKQ0KQGNsaWNrLm9wdGlvbigiLS1jb25kYSIsIGRlZmF1bHQ9ImF1dG8iKQ0KQGNsaWNrLm9wdGlvbigiLS1zZXRlbnYiLCBkZWZhdWx0PSIiKQ0KQGNsaWNrLm9wdGlvbigiLS1kaXNwbGF5IiwgZGVmYXVsdD0iZmFsc2UiKQ0KQGNsaWNrLm9wdGlvbigiLS1jYWNoZS1wYXRoIiwgZGVmYXVsdD0iIikNCkBjbGljay5vcHRpb24oIi0tY2FjaGUta2V5IiwgZGVmYXVsdD0iIikNCkBjbGljay5vcHRpb24oIi0tY2FjaGUtcmVzdG9yZS1rZXlzIiwgZGVmYXVsdD0iIikNCkBjbGljay5vcHRpb24oIi0tYXJ0aWZhY3QtcGF0aCIsIGRlZmF1bHQ9IiIpDQpAY2xpY2sub3B0aW9uKCItLXJ1bnMtb24iLCBkZWZhdWx0PSIiKQ0KQGNsaWNrLm9wdGlvbigiLS1kZWZhdWx0LXB5dGhvbiIsIGRlZmF1bHQ9IiIpDQpAY2xpY2sub3B0aW9uKCItLXRpbWVvdXQtbWludXRlcyIsIGRlZmF1bHQ9IjM2MCIpDQpkZWYgbG9hZF90b3hfdGFyZ2V0cyhlbnZzLCBsaWJyYXJpZXMsIHBvc2FyZ3MsIHRveGRlcHMsIHRveGFyZ3MsIHB5dGVzdCwgcHl0ZXN0X3Jlc3VsdHNfc3VtbWFyeSwNCiAgICAgICAgICAgICAgICAgICAgIGNvdmVyYWdlLCBjb25kYSwgc2V0ZW52LCBkaXNwbGF5LCBjYWNoZV9wYXRoLCBjYWNoZV9rZXksDQogICAgICAgICAgICAgICAgICAgICBjYWNoZV9yZXN0b3JlX2tleXMsIGFydGlmYWN0X3BhdGgsIHJ1bnNfb24sIGRlZmF1bHRfcHl0aG9uLCB0aW1lb3V0X21pbnV0ZXMpOg0KICAgICIiIlNjcmlwdCB0byBsb2FkIHRveCB0YXJnZXRzIGZvciBHaXRIdWIgQWN0aW9ucyB3b3JrZmxvdy4iIiINCiAgICAjIExvYWQgZW52cyBjb25maWcNCiAgICBlbnZzID0geWFtbC5sb2FkKGVudnMsIExvYWRlcj15YW1sLkJhc2VMb2FkZXIpDQogICAgcHJpbnQoanNvbi5kdW1wcyhlbnZzLCBpbmRlbnQ9MikpDQoNCiAgICAjIExvYWQgZ2xvYmFsIGxpYnJhcmllcyBjb25maWcNCiAgICBnbG9iYWxfbGlicmFyaWVzID0gew0KICAgICAgICAiYnJldyI6IFtdLA0KICAgICAgICAiYnJldy1jYXNrIjogW10sDQogICAgICAgICJhcHQiOiBbXSwNCiAgICAgICAgImNob2NvIjogW10sDQogICAgfQ0KICAgIGxpYnJhcmllcyA9IHlhbWwubG9hZChsaWJyYXJpZXMsIExvYWRlcj15YW1sLkJhc2VMb2FkZXIpDQogICAgaWYgbGlicmFyaWVzIGlzIG5vdCBOb25lOg0KICAgICAgICBnbG9iYWxfbGlicmFyaWVzLnVwZGF0ZShsaWJyYXJpZXMpDQogICAgcHJpbnQoanNvbi5kdW1wcyhnbG9iYWxfbGlicmFyaWVzLCBpbmRlbnQ9MikpDQoNCiAgICAjIERlZmF1bHQgaW1hZ2VzIHRvIHVzZSBmb3IgcnVubmVycw0KICAgIGRlZmF1bHRfcnVuc19vbiA9IHsNCiAgICAgICAgImxpbnV4IjogInVidW50dS1sYXRlc3QiLA0KICAgICAgICAibWFjb3MiOiAibWFjb3MtbGF0ZXN0IiwNCiAgICAgICAgIndpbmRvd3MiOiAid2luZG93cy1sYXRlc3QiLA0KICAgIH0NCiAgICBjdXN0b21fcnVuc19vbiA9IHlhbWwubG9hZChydW5zX29uLCBMb2FkZXI9eWFtbC5CYXNlTG9hZGVyKQ0KICAgIGlmIGlzaW5zdGFuY2UoY3VzdG9tX3J1bnNfb24sIGRpY3QpOg0KICAgICAgICBkZWZhdWx0X3J1bnNfb24udXBkYXRlKGN1c3RvbV9ydW5zX29uKQ0KICAgIHByaW50KGpzb24uZHVtcHMoZGVmYXVsdF9ydW5zX29uLCBpbmRlbnQ9MikpDQoNCiAgICAjIERlZmF1bHQgc3RyaW5nIHBhcmFtZXRlcnMgd2hpY2ggY2FuIGJlIG92ZXJ3cml0dGVuIGJ5IGVhY2ggZW52DQogICAgc3RyaW5nX3BhcmFtZXRlcnMgPSB7DQogICAgICAgICJwb3NhcmdzIjogcG9zYXJncywNCiAgICAgICAgInRveGRlcHMiOiB0b3hkZXBzLA0KICAgICAgICAidG94YXJncyI6IHRveGFyZ3MsDQogICAgICAgICJweXRlc3QiOiBweXRlc3QsDQogICAgICAgICJweXRlc3QtcmVzdWx0cy1zdW1tYXJ5IjogcHl0ZXN0X3Jlc3VsdHNfc3VtbWFyeSwNCiAgICAgICAgImNvdmVyYWdlIjogY292ZXJhZ2UsDQogICAgICAgICJjb25kYSI6IGNvbmRhLA0KICAgICAgICAic2V0ZW52Ijogc2V0ZW52LA0KICAgICAgICAiZGlzcGxheSI6IGRpc3BsYXksDQogICAgICAgICJjYWNoZS1wYXRoIjogY2FjaGVfcGF0aCwNCiAgICAgICAgImNhY2hlLWtleSI6IGNhY2hlX2tleSwNCiAgICAgICAgImNhY2hlLXJlc3RvcmUta2V5cyI6IGNhY2hlX3Jlc3RvcmVfa2V5cywNCiAgICAgICAgImFydGlmYWN0LXBhdGgiOiBhcnRpZmFjdF9wYXRoLA0KICAgICAgICAidGltZW91dC1taW51dGVzIjogdGltZW91dF9taW51dGVzLA0KICAgIH0NCg0KICAgICMgQ3JlYXRlIG1hdHJpeA0KICAgIG1hdHJpeCA9IHsiaW5jbHVkZSI6IFtdfQ0KICAgIGZvciBlbnYgaW4gZW52czoNCiAgICAgICAgbWF0cml4WyJpbmNsdWRlIl0uYXBwZW5kKGdldF9tYXRyaXhfaXRlbSgNCiAgICAgICAgICAgIGVudiwNCiAgICAgICAgICAgIGdsb2JhbF9saWJyYXJpZXM9Z2xvYmFsX2xpYnJhcmllcywNCiAgICAgICAgICAgIGdsb2JhbF9zdHJpbmdfcGFyYW1ldGVycz1zdHJpbmdfcGFyYW1ldGVycywNCiAgICAgICAgICAgIHJ1bnNfb249ZGVmYXVsdF9ydW5zX29uLA0KICAgICAgICAgICAgZGVmYXVsdF9weXRob249ZGVmYXVsdF9weXRob24sDQogICAgICAgICkpDQoNCiAgICAjIE91dHB1dCBtYXRyaXgNCiAgICBwcmludChqc29uLmR1bXBzKG1hdHJpeCwgaW5kZW50PTIpKQ0KICAgIHdpdGggb3Blbihvcy5lbnZpcm9uWyJHSVRIVUJfT1VUUFVUIl0sICJhIikgYXMgZjoNCiAgICAgICAgZi53cml0ZShmIm1hdHJpeD17anNvbi5kdW1wcyhtYXRyaXgpfVxuIikNCg0KDQpkZWYgZ2V0X21hdHJpeF9pdGVtKGVudiwgZ2xvYmFsX2xpYnJhcmllcywgZ2xvYmFsX3N0cmluZ19wYXJhbWV0ZXJzLA0KICAgICAgICAgICAgICAgICAgICBydW5zX29uLCBkZWZhdWx0X3B5dGhvbik6DQoNCiAgICAjIGRlZmluZSBzcGVjIGZvciBlYWNoIG1hdHJpeCBpbmNsdWRlICgrIGdsb2JhbF9zdHJpbmdfcGFyYW1ldGVycykNCiAgICBpdGVtID0gew0KICAgICAgICAib3MiOiBOb25lLA0KICAgICAgICAidG94ZW52IjogTm9uZSwNCiAgICAgICAgInB5dGhvbl92ZXJzaW9uIjogTm9uZSwNCiAgICAgICAgIm5hbWUiOiBOb25lLA0KICAgICAgICAicHl0ZXN0X2ZsYWciOiBOb25lLA0KICAgICAgICAibGlicmFyaWVzX2JyZXciOiBOb25lLA0KICAgICAgICAibGlicmFyaWVzX2JyZXdfY2FzayI6IE5vbmUsDQogICAgICAgICJsaWJyYXJpZXNfYXB0IjogTm9uZSwNCiAgICAgICAgImxpYnJhcmllc19jaG9jbyI6IE5vbmUsDQogICAgICAgICJjYWNoZS1wYXRoIjogTm9uZSwNCiAgICAgICAgImNhY2hlLWtleSI6IE5vbmUsDQogICAgICAgICJjYWNoZS1yZXN0b3JlLWtleXMiOiBOb25lLA0KICAgICAgICAiYXJ0aWZhY3QtbmFtZSI6IE5vbmUsDQogICAgICAgICJhcnRpZmFjdC1wYXRoIjogTm9uZSwNCiAgICAgICAgInRpbWVvdXQtbWludXRlcyI6IE5vbmUsDQogICAgfQ0KICAgIGZvciBzdHJpbmdfcGFyYW0sIGRlZmF1bHQgaW4gZ2xvYmFsX3N0cmluZ19wYXJhbWV0ZXJzLml0ZW1zKCk6DQogICAgICAgIGVudl92YWx1ZSA9IGVudi5nZXQoc3RyaW5nX3BhcmFtKQ0KICAgICAgICBpdGVtW3N0cmluZ19wYXJhbV0gPSBkZWZhdWx0IGlmIGVudl92YWx1ZSBpcyBOb25lIGVsc2UgZW52X3ZhbHVlDQoNCiAgICAjIHNldCBvcyBhbmQgdG94ZW52DQogICAgZm9yIGssIHYgaW4gcnVuc19vbi5pdGVtcygpOg0KICAgICAgICBpZiBrIGluIGVudjoNCiAgICAgICAgICAgIHBsYXRmb3JtID0gaw0KICAgICAgICAgICAgaXRlbVsib3MiXSA9IGVudi5nZXQoInJ1bnMtb24iLCB2KQ0KICAgICAgICAgICAgaXRlbVsidG94ZW52Il0gPSBlbnZba10NCiAgICBhc3NlcnQgaXRlbVsib3MiXSBpcyBub3QgTm9uZSBhbmQgaXRlbVsidG94ZW52Il0gaXMgbm90IE5vbmUNCg0KICAgICMgc2V0IHB5dGhvbl92ZXJzaW9uDQogICAgcHl0aG9uX3ZlcnNpb24gPSBlbnYuZ2V0KCJweXRob24tdmVyc2lvbiIpDQogICAgbSA9IHJlLnNlYXJjaCgiXnB5KDJ8MykoWzAtOV0rdD8pIiwgaXRlbVsidG94ZW52Il0pDQogICAgaWYgcHl0aG9uX3ZlcnNpb24gaXMgbm90IE5vbmU6DQogICAgICAgIGl0ZW1bInB5dGhvbl92ZXJzaW9uIl0gPSBweXRob25fdmVyc2lvbg0KICAgIGVsaWYgbSBpcyBub3QgTm9uZToNCiAgICAgICAgbWFqb3IsIG1pbm9yID0gbS5ncm91cHMoKQ0KICAgICAgICBpdGVtWyJweXRob25fdmVyc2lvbiJdID0gZiJ7bWFqb3J9LnttaW5vcn0iDQogICAgZWxzZToNCiAgICAgICAgaXRlbVsicHl0aG9uX3ZlcnNpb24iXSA9IGVudi5nZXQoImRlZmF1bHRfcHl0aG9uIikgb3IgZGVmYXVsdF9weXRob24NCg0KICAgICMgc2V0IG5hbWUNCiAgICBpdGVtWyJuYW1lIl0gPSBlbnYuZ2V0KCJuYW1lIikgb3IgZid7aXRlbVsidG94ZW52Il19ICh7aXRlbVsib3MiXX0pJw0KDQogICAgIyBzZXQgYXJ0aWZhY3QtbmFtZSAocmVwbGFjZSBpbnZhbGlkIHBhdGggY2hhcmFjdGVycykNCiAgICBpdGVtWyJhcnRpZmFjdC1uYW1lIl0gPSByZS5zdWIociJbXFwgLzo8PnwqP1wiJ10iLCAiLSIsIGl0ZW1bIm5hbWUiXSkNCiAgICBpdGVtWyJhcnRpZmFjdC1uYW1lIl0gPSByZS5zdWIociItKyIsICItIiwgaXRlbVsiYXJ0aWZhY3QtbmFtZSJdKQ0KDQogICAgIyBzZXQgcHl0ZXN0X2ZsYWcNCiAgICBpdGVtWyJweXRlc3RfZmxhZyJdID0gIiINCiAgICBzZXAgPSByIlxcIiBpZiBwbGF0Zm9ybSA9PSAid2luZG93cyIgZWxzZSAiLyINCiAgICBpZiBpdGVtWyJweXRlc3QiXSA9PSAidHJ1ZSIgYW5kICJjb2RlY292IiBpbiBpdGVtLmdldCgiY292ZXJhZ2UiLCAiIik6DQogICAgICAgIGl0ZW1bInB5dGVzdF9mbGFnIl0gKz0gKA0KICAgICAgICAgICAgcmYiLS1jb3YtcmVwb3J0PXhtbDoke3tHSVRIVUJfV09SS1NQQUNFfX17c2VwfWNvdmVyYWdlLnhtbCAiKQ0KICAgIGlmIGl0ZW1bInB5dGVzdCJdID09ICJ0cnVlIiBhbmQgaXRlbVsicHl0ZXN0LXJlc3VsdHMtc3VtbWFyeSJdID09ICJ0cnVlIjoNCiAgICAgICAgaXRlbVsicHl0ZXN0X2ZsYWciXSArPSByZiItLWp1bml0eG1sICR7e0dJVEhVQl9XT1JLU1BBQ0V9fXtzZXB9cmVzdWx0cy54bWwgIg0KDQogICAgIyBzZXQgbGlicmFyaWVzDQogICAgZW52X2xpYnJhcmllcyA9IGVudi5nZXQoImxpYnJhcmllcyIpDQogICAgaWYgaXNpbnN0YW5jZShlbnZfbGlicmFyaWVzLCBzdHIpIGFuZCBsZW4oZW52X2xpYnJhcmllcy5zdHJpcCgpKSA9PSAwOg0KICAgICAgICBlbnZfbGlicmFyaWVzID0ge30gICMgbm8gbGlicmFyaWVzIHJlcXVlc3RlZCBmb3IgZW52aXJvbm1lbnQNCiAgICBsaWJyYXJpZXMgPSBnbG9iYWxfbGlicmFyaWVzIGlmIGVudl9saWJyYXJpZXMgaXMgTm9uZSBlbHNlIGVudl9saWJyYXJpZXMNCiAgICBmb3IgbWFuYWdlciBpbiBbImJyZXciLCAiYnJld19jYXNrIiwgImFwdCIsICJjaG9jbyJdOg0KICAgICAgICBpdGVtW2YibGlicmFyaWVzX3ttYW5hZ2VyfSJdID0gIiAiLmpvaW4obGlicmFyaWVzLmdldChtYW5hZ2VyLCBbXSkpDQoNCiAgICAjIHNldCAiYXV0byIgY29uZGEgdmFsdWUNCiAgICBpZiBpdGVtWyJjb25kYSJdID09ICJhdXRvIjoNCiAgICAgICAgaXRlbVsiY29uZGEiXSA9ICJ0cnVlIiBpZiAiY29uZGEiIGluIGl0ZW1bInRveGVudiJdIGVsc2UgImZhbHNlIg0KDQogICAgIyBpbmplY3QgdG94ZGVwcyBmb3IgY29uZGENCiAgICBpZiBpdGVtWyJjb25kYSJdID09ICJ0cnVlIiBhbmQgInRveC1jb25kYSIgbm90IGluIGl0ZW1bInRveGRlcHMiXS5sb3dlcigpOg0KICAgICAgICBpdGVtWyJ0b3hkZXBzIl0gPSAoInRveC1jb25kYSAiICsgaXRlbVsidG94ZGVwcyJdKS5zdHJpcCgpDQoNCiAgICAjIG1ha2UgdGltZW91dC1taW51dGVzIGEgbnVtYmVyDQogICAgaXRlbVsidGltZW91dC1taW51dGVzIl0gPSBpbnQoaXRlbVsidGltZW91dC1taW51dGVzIl0pDQoNCiAgICAjIHZlcmlmeSB2YWx1ZXMNCiAgICBhc3NlcnQgaXRlbVsicHl0ZXN0Il0gaW4geyJ0cnVlIiwgImZhbHNlIn0NCiAgICBhc3NlcnQgaXRlbVsiY29uZGEiXSBpbiB7InRydWUiLCAiZmFsc2UifQ0KICAgIGFzc2VydCBpdGVtWyJkaXNwbGF5Il0gaW4geyJ0cnVlIiwgImZhbHNlIn0NCg0KICAgIHJldHVybiBpdGVtDQoNCg0KaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoNCiAgICBsb2FkX3RveF90YXJnZXRzKCkNCg== + TOX_MATRIX_SCRIPT: IyAvLy8gc2NyaXB0CiMgcmVxdWlyZXMtcHl0aG9uID0gIj09My4xMiIKIyBkZXBlbmRlbmNpZXMgPSBbCiMgICAgICJjbGljaz09OC4yLjEiLAojICAgICAicHl5YW1sPT02LjAuMiIsCiMgXQojIC8vLwppbXBvcnQganNvbgppbXBvcnQgb3MKaW1wb3J0IHJlCgppbXBvcnQgY2xpY2sKaW1wb3J0IHlhbWwKCgpAY2xpY2suY29tbWFuZCgpCkBjbGljay5vcHRpb24oIi0tZW52cyIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tbGlicmFyaWVzIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1wb3NhcmdzIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS10b3hkZXBzIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS10b3hhcmdzIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1weXRlc3QiLCBkZWZhdWx0PSJ0cnVlIikKQGNsaWNrLm9wdGlvbigiLS1weXRlc3QtcmVzdWx0cy1zdW1tYXJ5IiwgZGVmYXVsdD0iZmFsc2UiKQpAY2xpY2sub3B0aW9uKCItLWNvdmVyYWdlIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1jb25kYSIsIGRlZmF1bHQ9ImF1dG8iKQpAY2xpY2sub3B0aW9uKCItLXNldGVudiIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tZGlzcGxheSIsIGRlZmF1bHQ9ImZhbHNlIikKQGNsaWNrLm9wdGlvbigiLS1jYWNoZS1wYXRoIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1jYWNoZS1rZXkiLCBkZWZhdWx0PSIiKQpAY2xpY2sub3B0aW9uKCItLWNhY2hlLXJlc3RvcmUta2V5cyIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tYXJ0aWZhY3QtcGF0aCIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tcnVucy1vbiIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tZGVmYXVsdC1weXRob24iLCBkZWZhdWx0PSIiKQpAY2xpY2sub3B0aW9uKCItLXRpbWVvdXQtbWludXRlcyIsIGRlZmF1bHQ9IjM2MCIpCmRlZiBsb2FkX3RveF90YXJnZXRzKGVudnMsIGxpYnJhcmllcywgcG9zYXJncywgdG94ZGVwcywgdG94YXJncywgcHl0ZXN0LCBweXRlc3RfcmVzdWx0c19zdW1tYXJ5LAogICAgICAgICAgICAgICAgICAgICBjb3ZlcmFnZSwgY29uZGEsIHNldGVudiwgZGlzcGxheSwgY2FjaGVfcGF0aCwgY2FjaGVfa2V5LAogICAgICAgICAgICAgICAgICAgICBjYWNoZV9yZXN0b3JlX2tleXMsIGFydGlmYWN0X3BhdGgsIHJ1bnNfb24sIGRlZmF1bHRfcHl0aG9uLCB0aW1lb3V0X21pbnV0ZXMpOgogICAgIiIiU2NyaXB0IHRvIGxvYWQgdG94IHRhcmdldHMgZm9yIEdpdEh1YiBBY3Rpb25zIHdvcmtmbG93LiIiIgogICAgIyBMb2FkIGVudnMgY29uZmlnCiAgICBlbnZzID0geWFtbC5sb2FkKGVudnMsIExvYWRlcj15YW1sLkJhc2VMb2FkZXIpCiAgICBwcmludChqc29uLmR1bXBzKGVudnMsIGluZGVudD0yKSkKCiAgICAjIExvYWQgZ2xvYmFsIGxpYnJhcmllcyBjb25maWcKICAgIGdsb2JhbF9saWJyYXJpZXMgPSB7CiAgICAgICAgImJyZXciOiBbXSwKICAgICAgICAiYnJldy1jYXNrIjogW10sCiAgICAgICAgImFwdCI6IFtdLAogICAgICAgICJjaG9jbyI6IFtdLAogICAgfQogICAgbGlicmFyaWVzID0geWFtbC5sb2FkKGxpYnJhcmllcywgTG9hZGVyPXlhbWwuQmFzZUxvYWRlcikKICAgIGlmIGxpYnJhcmllcyBpcyBub3QgTm9uZToKICAgICAgICBnbG9iYWxfbGlicmFyaWVzLnVwZGF0ZShsaWJyYXJpZXMpCiAgICBwcmludChqc29uLmR1bXBzKGdsb2JhbF9saWJyYXJpZXMsIGluZGVudD0yKSkKCiAgICAjIERlZmF1bHQgaW1hZ2VzIHRvIHVzZSBmb3IgcnVubmVycwogICAgZGVmYXVsdF9ydW5zX29uID0gewogICAgICAgICJsaW51eCI6ICJ1YnVudHUtbGF0ZXN0IiwKICAgICAgICAibWFjb3MiOiAibWFjb3MtbGF0ZXN0IiwKICAgICAgICAid2luZG93cyI6ICJ3aW5kb3dzLWxhdGVzdCIsCiAgICB9CiAgICBjdXN0b21fcnVuc19vbiA9IHlhbWwubG9hZChydW5zX29uLCBMb2FkZXI9eWFtbC5CYXNlTG9hZGVyKQogICAgaWYgaXNpbnN0YW5jZShjdXN0b21fcnVuc19vbiwgZGljdCk6CiAgICAgICAgZGVmYXVsdF9ydW5zX29uLnVwZGF0ZShjdXN0b21fcnVuc19vbikKICAgIHByaW50KGpzb24uZHVtcHMoZGVmYXVsdF9ydW5zX29uLCBpbmRlbnQ9MikpCgogICAgIyBEZWZhdWx0IHN0cmluZyBwYXJhbWV0ZXJzIHdoaWNoIGNhbiBiZSBvdmVyd3JpdHRlbiBieSBlYWNoIGVudgogICAgc3RyaW5nX3BhcmFtZXRlcnMgPSB7CiAgICAgICAgInBvc2FyZ3MiOiBwb3NhcmdzLAogICAgICAgICJ0b3hkZXBzIjogdG94ZGVwcywKICAgICAgICAidG94YXJncyI6IHRveGFyZ3MsCiAgICAgICAgInB5dGVzdCI6IHB5dGVzdCwKICAgICAgICAicHl0ZXN0LXJlc3VsdHMtc3VtbWFyeSI6IHB5dGVzdF9yZXN1bHRzX3N1bW1hcnksCiAgICAgICAgImNvdmVyYWdlIjogY292ZXJhZ2UsCiAgICAgICAgImNvbmRhIjogY29uZGEsCiAgICAgICAgInNldGVudiI6IHNldGVudiwKICAgICAgICAiZGlzcGxheSI6IGRpc3BsYXksCiAgICAgICAgImNhY2hlLXBhdGgiOiBjYWNoZV9wYXRoLAogICAgICAgICJjYWNoZS1rZXkiOiBjYWNoZV9rZXksCiAgICAgICAgImNhY2hlLXJlc3RvcmUta2V5cyI6IGNhY2hlX3Jlc3RvcmVfa2V5cywKICAgICAgICAiYXJ0aWZhY3QtcGF0aCI6IGFydGlmYWN0X3BhdGgsCiAgICAgICAgInRpbWVvdXQtbWludXRlcyI6IHRpbWVvdXRfbWludXRlcywKICAgIH0KCiAgICAjIENyZWF0ZSBtYXRyaXgKICAgIG1hdHJpeCA9IHsiaW5jbHVkZSI6IFtdfQogICAgZm9yIGVudiBpbiBlbnZzOgogICAgICAgIG1hdHJpeFsiaW5jbHVkZSJdLmFwcGVuZChnZXRfbWF0cml4X2l0ZW0oCiAgICAgICAgICAgIGVudiwKICAgICAgICAgICAgZ2xvYmFsX2xpYnJhcmllcz1nbG9iYWxfbGlicmFyaWVzLAogICAgICAgICAgICBnbG9iYWxfc3RyaW5nX3BhcmFtZXRlcnM9c3RyaW5nX3BhcmFtZXRlcnMsCiAgICAgICAgICAgIHJ1bnNfb249ZGVmYXVsdF9ydW5zX29uLAogICAgICAgICAgICBkZWZhdWx0X3B5dGhvbj1kZWZhdWx0X3B5dGhvbiwKICAgICAgICApKQoKICAgICMgT3V0cHV0IG1hdHJpeAogICAgcHJpbnQoanNvbi5kdW1wcyhtYXRyaXgsIGluZGVudD0yKSkKICAgIHdpdGggb3Blbihvcy5lbnZpcm9uWyJHSVRIVUJfT1VUUFVUIl0sICJhIikgYXMgZjoKICAgICAgICBmLndyaXRlKGYibWF0cml4PXtqc29uLmR1bXBzKG1hdHJpeCl9XG4iKQoKCmRlZiBnZXRfbWF0cml4X2l0ZW0oZW52LCBnbG9iYWxfbGlicmFyaWVzLCBnbG9iYWxfc3RyaW5nX3BhcmFtZXRlcnMsCiAgICAgICAgICAgICAgICAgICAgcnVuc19vbiwgZGVmYXVsdF9weXRob24pOgoKICAgICMgZGVmaW5lIHNwZWMgZm9yIGVhY2ggbWF0cml4IGluY2x1ZGUgKCsgZ2xvYmFsX3N0cmluZ19wYXJhbWV0ZXJzKQogICAgaXRlbSA9IHsKICAgICAgICAib3MiOiBOb25lLAogICAgICAgICJ0b3hlbnYiOiBOb25lLAogICAgICAgICJweXRob25fdmVyc2lvbiI6IE5vbmUsCiAgICAgICAgIm5hbWUiOiBOb25lLAogICAgICAgICJweXRlc3RfZmxhZyI6IE5vbmUsCiAgICAgICAgImxpYnJhcmllc19icmV3IjogTm9uZSwKICAgICAgICAibGlicmFyaWVzX2JyZXdfY2FzayI6IE5vbmUsCiAgICAgICAgImxpYnJhcmllc19hcHQiOiBOb25lLAogICAgICAgICJsaWJyYXJpZXNfY2hvY28iOiBOb25lLAogICAgICAgICJjYWNoZS1wYXRoIjogTm9uZSwKICAgICAgICAiY2FjaGUta2V5IjogTm9uZSwKICAgICAgICAiY2FjaGUtcmVzdG9yZS1rZXlzIjogTm9uZSwKICAgICAgICAiYXJ0aWZhY3QtbmFtZSI6IE5vbmUsCiAgICAgICAgImFydGlmYWN0LXBhdGgiOiBOb25lLAogICAgICAgICJ0aW1lb3V0LW1pbnV0ZXMiOiBOb25lLAogICAgfQogICAgZm9yIHN0cmluZ19wYXJhbSwgZGVmYXVsdCBpbiBnbG9iYWxfc3RyaW5nX3BhcmFtZXRlcnMuaXRlbXMoKToKICAgICAgICBlbnZfdmFsdWUgPSBlbnYuZ2V0KHN0cmluZ19wYXJhbSkKICAgICAgICBpdGVtW3N0cmluZ19wYXJhbV0gPSBkZWZhdWx0IGlmIGVudl92YWx1ZSBpcyBOb25lIGVsc2UgZW52X3ZhbHVlCgogICAgIyBzZXQgb3MgYW5kIHRveGVudgogICAgZm9yIGssIHYgaW4gcnVuc19vbi5pdGVtcygpOgogICAgICAgIGlmIGsgaW4gZW52OgogICAgICAgICAgICBwbGF0Zm9ybSA9IGsKICAgICAgICAgICAgaXRlbVsib3MiXSA9IGVudi5nZXQoInJ1bnMtb24iLCB2KQogICAgICAgICAgICBpdGVtWyJ0b3hlbnYiXSA9IGVudltrXQogICAgYXNzZXJ0IGl0ZW1bIm9zIl0gaXMgbm90IE5vbmUgYW5kIGl0ZW1bInRveGVudiJdIGlzIG5vdCBOb25lCgogICAgIyBzZXQgcHl0aG9uX3ZlcnNpb24KICAgIHB5dGhvbl92ZXJzaW9uID0gZW52LmdldCgicHl0aG9uLXZlcnNpb24iKQogICAgbSA9IHJlLnNlYXJjaCgiXnB5KDJ8MykoWzAtOV0rdD8pIiwgaXRlbVsidG94ZW52Il0pCiAgICBpZiBweXRob25fdmVyc2lvbiBpcyBub3QgTm9uZToKICAgICAgICBpdGVtWyJweXRob25fdmVyc2lvbiJdID0gcHl0aG9uX3ZlcnNpb24KICAgIGVsaWYgbSBpcyBub3QgTm9uZToKICAgICAgICBtYWpvciwgbWlub3IgPSBtLmdyb3VwcygpCiAgICAgICAgaXRlbVsicHl0aG9uX3ZlcnNpb24iXSA9IGYie21ham9yfS57bWlub3J9IgogICAgZWxzZToKICAgICAgICBpdGVtWyJweXRob25fdmVyc2lvbiJdID0gZW52LmdldCgiZGVmYXVsdF9weXRob24iKSBvciBkZWZhdWx0X3B5dGhvbgoKICAgICMgc2V0IG5hbWUKICAgIGl0ZW1bIm5hbWUiXSA9IGVudi5nZXQoIm5hbWUiKSBvciBmJ3tpdGVtWyJ0b3hlbnYiXX0gKHtpdGVtWyJvcyJdfSknCgogICAgIyBzZXQgYXJ0aWZhY3QtbmFtZSAocmVwbGFjZSBpbnZhbGlkIHBhdGggY2hhcmFjdGVycykKICAgIGl0ZW1bImFydGlmYWN0LW5hbWUiXSA9IHJlLnN1YihyIltcXCAvOjw+fCo/XCInXSIsICItIiwgaXRlbVsibmFtZSJdKQogICAgaXRlbVsiYXJ0aWZhY3QtbmFtZSJdID0gcmUuc3ViKHIiLSsiLCAiLSIsIGl0ZW1bImFydGlmYWN0LW5hbWUiXSkKCiAgICAjIHNldCBweXRlc3RfZmxhZwogICAgaXRlbVsicHl0ZXN0X2ZsYWciXSA9ICIiCiAgICBzZXAgPSByIlxcIiBpZiBwbGF0Zm9ybSA9PSAid2luZG93cyIgZWxzZSAiLyIKICAgIGlmIGl0ZW1bInB5dGVzdCJdID09ICJ0cnVlIiBhbmQgImNvZGVjb3YiIGluIGl0ZW0uZ2V0KCJjb3ZlcmFnZSIsICIiKToKICAgICAgICBpdGVtWyJweXRlc3RfZmxhZyJdICs9ICgKICAgICAgICAgICAgcmYiLS1jb3YtcmVwb3J0PXhtbDoke3tHSVRIVUJfV09SS1NQQUNFfX17c2VwfWNvdmVyYWdlLnhtbCAiKQogICAgaWYgaXRlbVsicHl0ZXN0Il0gPT0gInRydWUiIGFuZCBpdGVtWyJweXRlc3QtcmVzdWx0cy1zdW1tYXJ5Il0gPT0gInRydWUiOgogICAgICAgIGl0ZW1bInB5dGVzdF9mbGFnIl0gKz0gcmYiLS1qdW5pdHhtbCAke3tHSVRIVUJfV09SS1NQQUNFfX17c2VwfXJlc3VsdHMueG1sICIKCiAgICAjIHNldCBsaWJyYXJpZXMKICAgIGVudl9saWJyYXJpZXMgPSBlbnYuZ2V0KCJsaWJyYXJpZXMiKQogICAgaWYgaXNpbnN0YW5jZShlbnZfbGlicmFyaWVzLCBzdHIpIGFuZCBsZW4oZW52X2xpYnJhcmllcy5zdHJpcCgpKSA9PSAwOgogICAgICAgIGVudl9saWJyYXJpZXMgPSB7fSAgIyBubyBsaWJyYXJpZXMgcmVxdWVzdGVkIGZvciBlbnZpcm9ubWVudAogICAgbGlicmFyaWVzID0gZ2xvYmFsX2xpYnJhcmllcyBpZiBlbnZfbGlicmFyaWVzIGlzIE5vbmUgZWxzZSBlbnZfbGlicmFyaWVzCiAgICBmb3IgbWFuYWdlciBpbiBbImJyZXciLCAiYnJld19jYXNrIiwgImFwdCIsICJjaG9jbyJdOgogICAgICAgIGl0ZW1bZiJsaWJyYXJpZXNfe21hbmFnZXJ9Il0gPSAiICIuam9pbihsaWJyYXJpZXMuZ2V0KG1hbmFnZXIsIFtdKSkKCiAgICAjIHNldCAiYXV0byIgY29uZGEgdmFsdWUKICAgIGlmIGl0ZW1bImNvbmRhIl0gPT0gImF1dG8iOgogICAgICAgIGl0ZW1bImNvbmRhIl0gPSAidHJ1ZSIgaWYgImNvbmRhIiBpbiBpdGVtWyJ0b3hlbnYiXSBlbHNlICJmYWxzZSIKCiAgICAjIGluamVjdCB0b3hkZXBzIGZvciBjb25kYQogICAgaWYgaXRlbVsiY29uZGEiXSA9PSAidHJ1ZSIgYW5kICJ0b3gtY29uZGEiIG5vdCBpbiBpdGVtWyJ0b3hkZXBzIl0ubG93ZXIoKToKICAgICAgICBpdGVtWyJ0b3hkZXBzIl0gPSAoInRveC1jb25kYSAiICsgaXRlbVsidG94ZGVwcyJdKS5zdHJpcCgpCgogICAgIyBtYWtlIHRpbWVvdXQtbWludXRlcyBhIG51bWJlcgogICAgaXRlbVsidGltZW91dC1taW51dGVzIl0gPSBpbnQoaXRlbVsidGltZW91dC1taW51dGVzIl0pCgogICAgIyB2ZXJpZnkgdmFsdWVzCiAgICBhc3NlcnQgaXRlbVsicHl0ZXN0Il0gaW4geyJ0cnVlIiwgImZhbHNlIn0KICAgIGFzc2VydCBpdGVtWyJjb25kYSJdIGluIHsidHJ1ZSIsICJmYWxzZSJ9CiAgICBhc3NlcnQgaXRlbVsiZGlzcGxheSJdIGluIHsidHJ1ZSIsICJmYWxzZSJ9CgogICAgcmV0dXJuIGl0ZW0KCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgbG9hZF90b3hfdGFyZ2V0cygpCg== - run: cat tox_matrix.py - id: set-outputs run: | @@ -208,7 +208,7 @@ jobs: pipx run set_env.py "${{ matrix.setenv }}" rm set_env.py env: - SET_ENV_SCRIPT: IyAvLy8gc2NyaXB0DQojIHJlcXVpcmVzLXB5dGhvbiA9ICI9PTMuMTIiDQojIGRlcGVuZGVuY2llcyA9IFsNCiMgICAgICJweXlhbWw9PTYuMC4yIiwNCiMgXQ0KIyAvLy8NCmltcG9ydCBqc29uDQppbXBvcnQgb3MNCmltcG9ydCBzeXMNCg0KaW1wb3J0IHlhbWwNCg0KR0lUSFVCX0VOViA9IG9zLmdldGVudigiR0lUSFVCX0VOViIpDQppZiBHSVRIVUJfRU5WIGlzIE5vbmU6DQogICAgcmFpc2UgVmFsdWVFcnJvcigiR0lUSFVCX0VOViBub3Qgc2V0LiBNdXN0IGJlIHJ1biBpbnNpZGUgR2l0SHViIEFjdGlvbnMuIikNCg0KREVMSU1JVEVSID0gIkVPRiINCg0KDQpkZWYgc2V0X2VudihlbnYpOg0KDQogICAgZW52ID0geWFtbC5sb2FkKGVudiwgTG9hZGVyPXlhbWwuQmFzZUxvYWRlcikNCiAgICBwcmludChqc29uLmR1bXBzKGVudiwgaW5kZW50PTIpKQ0KDQogICAgaWYgbm90IGlzaW5zdGFuY2UoZW52LCBkaWN0KToNCiAgICAgICAgdGl0bGUgPSAiYGVudmAgbXVzdCBiZSBtYXBwaW5nIg0KICAgICAgICBtZXNzYWdlID0gZiJgZW52YCBtdXN0IGJlIG1hcHBpbmcgb2YgZW52IHZhcmlhYmxlcyB0byB2YWx1ZXMsIGdvdCB0eXBlIHt0eXBlKGVudil9Ig0KICAgICAgICBwcmludChmIjo6ZXJyb3IgdGl0bGU9e3RpdGxlfTo6e21lc3NhZ2V9IikNCiAgICAgICAgZXhpdCgxKQ0KDQogICAgZm9yIGssIHYgaW4gZW52Lml0ZW1zKCk6DQoNCiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uodiwgc3RyKToNCiAgICAgICAgICAgIHRpdGxlID0gImBlbnZgIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MiDQogICAgICAgICAgICBtZXNzYWdlID0gZiJgZW52YCB2YWx1ZXMgbXVzdCBiZSBzdHJpbmdzLCBidXQgdmFsdWUgb2Yge2t9IGhhcyB0eXBlIHt0eXBlKHYpfSINCiAgICAgICAgICAgIHByaW50KGYiOjplcnJvciB0aXRsZT17dGl0bGV9Ojp7bWVzc2FnZX0iKQ0KICAgICAgICAgICAgZXhpdCgxKQ0KDQogICAgICAgIHYgPSB2LnNwbGl0KCJcbiIpDQoNCiAgICAgICAgd2l0aCBvcGVuKEdJVEhVQl9FTlYsICJhIikgYXMgZjoNCiAgICAgICAgICAgIGlmIGxlbih2KSA9PSAxOg0KICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7a309e3ZbMF19XG4iKQ0KICAgICAgICAgICAgZWxzZToNCiAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiB2Og0KICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbGluZS5zdHJpcCgpICE9IERFTElNSVRFUg0KICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7a308PHtERUxJTUlURVJ9XG4iKQ0KICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHY6DQogICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7bGluZX1cbiIpDQogICAgICAgICAgICAgICAgZi53cml0ZShmIntERUxJTUlURVJ9XG4iKQ0KDQogICAgICAgIHByaW50KGYie2t9IHdyaXR0ZW4gdG8gR0lUSFVCX0VOViIpDQoNCg0KaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoNCiAgICBzZXRfZW52KHN5cy5hcmd2WzFdKQ0K + SET_ENV_SCRIPT: IyAvLy8gc2NyaXB0CiMgcmVxdWlyZXMtcHl0aG9uID0gIj09My4xMiIKIyBkZXBlbmRlbmNpZXMgPSBbCiMgICAgICJweXlhbWw9PTYuMC4yIiwKIyBdCiMgLy8vCmltcG9ydCBqc29uCmltcG9ydCBvcwppbXBvcnQgc3lzCgppbXBvcnQgeWFtbAoKR0lUSFVCX0VOViA9IG9zLmdldGVudigiR0lUSFVCX0VOViIpCmlmIEdJVEhVQl9FTlYgaXMgTm9uZToKICAgIHJhaXNlIFZhbHVlRXJyb3IoIkdJVEhVQl9FTlYgbm90IHNldC4gTXVzdCBiZSBydW4gaW5zaWRlIEdpdEh1YiBBY3Rpb25zLiIpCgpERUxJTUlURVIgPSAiRU9GIgoKCmRlZiBzZXRfZW52KGVudik6CgogICAgZW52ID0geWFtbC5sb2FkKGVudiwgTG9hZGVyPXlhbWwuQmFzZUxvYWRlcikKICAgIHByaW50KGpzb24uZHVtcHMoZW52LCBpbmRlbnQ9MikpCgogICAgaWYgbm90IGlzaW5zdGFuY2UoZW52LCBkaWN0KToKICAgICAgICB0aXRsZSA9ICJgZW52YCBtdXN0IGJlIG1hcHBpbmciCiAgICAgICAgbWVzc2FnZSA9IGYiYGVudmAgbXVzdCBiZSBtYXBwaW5nIG9mIGVudiB2YXJpYWJsZXMgdG8gdmFsdWVzLCBnb3QgdHlwZSB7dHlwZShlbnYpfSIKICAgICAgICBwcmludChmIjo6ZXJyb3IgdGl0bGU9e3RpdGxlfTo6e21lc3NhZ2V9IikKICAgICAgICBleGl0KDEpCgogICAgZm9yIGssIHYgaW4gZW52Lml0ZW1zKCk6CgogICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHYsIHN0cik6CiAgICAgICAgICAgIHRpdGxlID0gImBlbnZgIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MiCiAgICAgICAgICAgIG1lc3NhZ2UgPSBmImBlbnZgIHZhbHVlcyBtdXN0IGJlIHN0cmluZ3MsIGJ1dCB2YWx1ZSBvZiB7a30gaGFzIHR5cGUge3R5cGUodil9IgogICAgICAgICAgICBwcmludChmIjo6ZXJyb3IgdGl0bGU9e3RpdGxlfTo6e21lc3NhZ2V9IikKICAgICAgICAgICAgZXhpdCgxKQoKICAgICAgICB2ID0gdi5zcGxpdCgiXG4iKQoKICAgICAgICB3aXRoIG9wZW4oR0lUSFVCX0VOViwgImEiKSBhcyBmOgogICAgICAgICAgICBpZiBsZW4odikgPT0gMToKICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7a309e3ZbMF19XG4iKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gdjoKICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbGluZS5zdHJpcCgpICE9IERFTElNSVRFUgogICAgICAgICAgICAgICAgZi53cml0ZShmIntrfTw8e0RFTElNSVRFUn1cbiIpCiAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiB2OgogICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7bGluZX1cbiIpCiAgICAgICAgICAgICAgICBmLndyaXRlKGYie0RFTElNSVRFUn1cbiIpCgogICAgICAgIHByaW50KGYie2t9IHdyaXR0ZW4gdG8gR0lUSFVCX0VOViIpCgoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIHNldF9lbnYoc3lzLmFyZ3ZbMV0pCg== - name: Setup headless display if: ${{ matrix.display == 'true' }}