From 9ecd8ca3fc4daf32c09c959dea6fd3740f24e2c0 Mon Sep 17 00:00:00 2001 From: zacharyburnett Date: Tue, 5 May 2026 09:16:03 -0400 Subject: [PATCH 1/8] install `conda_packages:` directly with micromamba --- .github/workflows/test_tox.yml | 7 ++++--- .github/workflows/tox.yml | 26 ++++++++++---------------- docs/source/tox.rst | 11 ++++------- tools/tox_matrix.py | 19 +++---------------- 4 files changed, 21 insertions(+), 42 deletions(-) diff --git a/.github/workflows/test_tox.yml b/.github/workflows/test_tox.yml index a430d4a..b9a8478 100644 --- a/.github/workflows/test_tox.yml +++ b/.github/workflows/test_tox.yml @@ -125,10 +125,11 @@ jobs: test_conda: uses: ./.github/workflows/tox.yml with: + conda_packages: hstcal envs: | - - linux: py312-conda - - macos: py311-conda - - windows: py310-conda + - linux: py312 + - macos: py311 + - windows: py310 test_setenv: uses: ./.github/workflows/tox.yml diff --git a/.github/workflows/tox.yml b/.github/workflows/tox.yml index c2b52ae..17c7e1e 100644 --- a/.github/workflows/tox.yml +++ b/.github/workflows/tox.yml @@ -57,11 +57,11 @@ on: required: false default: '' type: string - conda: - description: Whether to test with conda (deprecated) - required: false - default: 'auto' + conda_packages: type: string + description: extra packages to install with `mamba` + required: false + default: "" setenv: description: A map of environment variables to be available when testing required: false @@ -172,7 +172,7 @@ jobs: shell: sh - run: echo $TOX_MATRIX_SCRIPT | base64 --decode > tox_matrix.py env: - TOX_MATRIX_SCRIPT: IyAvLy8gc2NyaXB0CiMgcmVxdWlyZXMtcHl0aG9uID0gIj09My4xMiIKIyBkZXBlbmRlbmNpZXMgPSBbCiMgICAgICJjbGljaz09OC4yLjEiLAojICAgICAicHl5YW1sPT02LjAuMiIsCiMgXQojIC8vLwppbXBvcnQganNvbgppbXBvcnQgb3MKaW1wb3J0IHJlCmltcG9ydCB3YXJuaW5ncwoKaW1wb3J0IGNsaWNrCmltcG9ydCB5YW1sCgoKQGNsaWNrLmNvbW1hbmQoKQpAY2xpY2sub3B0aW9uKCItLWVudnMiLCBkZWZhdWx0PSIiKQpAY2xpY2sub3B0aW9uKCItLWxpYnJhcmllcyIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tcG9zYXJncyIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tdG94ZGVwcyIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tdG94YXJncyIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tcHl0ZXN0IiwgZGVmYXVsdD0idHJ1ZSIpCkBjbGljay5vcHRpb24oIi0tcHl0ZXN0LXJlc3VsdHMtc3VtbWFyeSIsIGRlZmF1bHQ9ImZhbHNlIikKQGNsaWNrLm9wdGlvbigiLS1jb3ZlcmFnZSIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tY29uZGEiLCBkZWZhdWx0PSJhdXRvIikKQGNsaWNrLm9wdGlvbigiLS1zZXRlbnYiLCBkZWZhdWx0PSIiKQpAY2xpY2sub3B0aW9uKCItLWRpc3BsYXkiLCBkZWZhdWx0PSJmYWxzZSIpCkBjbGljay5vcHRpb24oIi0tY2FjaGUtcGF0aCIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tY2FjaGUta2V5IiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1jYWNoZS1yZXN0b3JlLWtleXMiLCBkZWZhdWx0PSIiKQpAY2xpY2sub3B0aW9uKCItLWFydGlmYWN0LXBhdGgiLCBkZWZhdWx0PSIiKQpAY2xpY2sub3B0aW9uKCItLWFydGlmYWN0LWFyY2hpdmUiLCBkZWZhdWx0PSJ0cnVlIikKQGNsaWNrLm9wdGlvbigiLS1hcnRpZmFjdC1pbmNsdWRlLWhpZGRlbi1maWxlcyIsIGRlZmF1bHQ9ImZhbHNlIikKQGNsaWNrLm9wdGlvbigiLS1hcnRpZmFjdC1pZi1uby1maWxlcy1mb3VuZCIsIGRlZmF1bHQ9Indhcm4iKQpAY2xpY2sub3B0aW9uKCItLXJ1bnMtb24iLCBkZWZhdWx0PSIiKQpAY2xpY2sub3B0aW9uKCItLWRlZmF1bHQtcHl0aG9uIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS10aW1lb3V0LW1pbnV0ZXMiLCBkZWZhdWx0PSIzNjAiKQpkZWYgbG9hZF90b3hfdGFyZ2V0cygKICAgIGVudnMsCiAgICBsaWJyYXJpZXMsCiAgICBwb3NhcmdzLAogICAgdG94ZGVwcywKICAgIHRveGFyZ3MsCiAgICBweXRlc3QsCiAgICBweXRlc3RfcmVzdWx0c19zdW1tYXJ5LAogICAgY292ZXJhZ2UsCiAgICBjb25kYSwKICAgIHNldGVudiwKICAgIGRpc3BsYXksCiAgICBjYWNoZV9wYXRoLAogICAgY2FjaGVfa2V5LAogICAgY2FjaGVfcmVzdG9yZV9rZXlzLAogICAgYXJ0aWZhY3RfcGF0aCwKICAgIGFydGlmYWN0X2FyY2hpdmUsCiAgICBhcnRpZmFjdF9pbmNsdWRlX2hpZGRlbl9maWxlcywKICAgIGFydGlmYWN0X2lmX25vX2ZpbGVzX2ZvdW5kLAogICAgcnVuc19vbiwKICAgIGRlZmF1bHRfcHl0aG9uLAogICAgdGltZW91dF9taW51dGVzLAopOgogICAgIiIiU2NyaXB0IHRvIGxvYWQgdG94IHRhcmdldHMgZm9yIEdpdEh1YiBBY3Rpb25zIHdvcmtmbG93LiIiIgogICAgIyBMb2FkIGVudnMgY29uZmlnCiAgICBlbnZzID0geWFtbC5sb2FkKGVudnMucmVwbGFjZSgiXFxuIiwgIlxuIiksIExvYWRlcj15YW1sLkJhc2VMb2FkZXIpCiAgICBwcmludChqc29uLmR1bXBzKGVudnMsIGluZGVudD0yKSkKCiAgICAjIExvYWQgZ2xvYmFsIGxpYnJhcmllcyBjb25maWcKICAgIGdsb2JhbF9saWJyYXJpZXMgPSB7CiAgICAgICAgImJyZXciOiBbXSwKICAgICAgICAiYnJldy1jYXNrIjogW10sCiAgICAgICAgImFwdCI6IFtdLAogICAgICAgICJjaG9jbyI6IFtdLAogICAgfQogICAgbGlicmFyaWVzID0geWFtbC5sb2FkKGxpYnJhcmllcywgTG9hZGVyPXlhbWwuQmFzZUxvYWRlcikKICAgIGlmIGxpYnJhcmllcyBpcyBub3QgTm9uZToKICAgICAgICBnbG9iYWxfbGlicmFyaWVzLnVwZGF0ZShsaWJyYXJpZXMpCiAgICBwcmludChqc29uLmR1bXBzKGdsb2JhbF9saWJyYXJpZXMsIGluZGVudD0yKSkKCiAgICAjIERlZmF1bHQgaW1hZ2VzIHRvIHVzZSBmb3IgcnVubmVycwogICAgZGVmYXVsdF9ydW5zX29uID0gewogICAgICAgICJsaW51eCI6ICJ1YnVudHUtbGF0ZXN0IiwKICAgICAgICAibWFjb3MiOiAibWFjb3MtbGF0ZXN0IiwKICAgICAgICAid2luZG93cyI6ICJ3aW5kb3dzLWxhdGVzdCIsCiAgICB9CiAgICBjdXN0b21fcnVuc19vbiA9IHlhbWwubG9hZChydW5zX29uLCBMb2FkZXI9eWFtbC5CYXNlTG9hZGVyKQogICAgaWYgaXNpbnN0YW5jZShjdXN0b21fcnVuc19vbiwgZGljdCk6CiAgICAgICAgZGVmYXVsdF9ydW5zX29uLnVwZGF0ZShjdXN0b21fcnVuc19vbikKICAgIHByaW50KGpzb24uZHVtcHMoZGVmYXVsdF9ydW5zX29uLCBpbmRlbnQ9MikpCgogICAgIyBEZWZhdWx0IHN0cmluZyBwYXJhbWV0ZXJzIHdoaWNoIGNhbiBiZSBvdmVyd3JpdHRlbiBieSBlYWNoIGVudgogICAgc3RyaW5nX3BhcmFtZXRlcnMgPSB7CiAgICAgICAgInBvc2FyZ3MiOiBwb3NhcmdzLAogICAgICAgICJ0b3hkZXBzIjogdG94ZGVwcywKICAgICAgICAidG94YXJncyI6IHRveGFyZ3MsCiAgICAgICAgInB5dGVzdCI6IHB5dGVzdCwKICAgICAgICAicHl0ZXN0LXJlc3VsdHMtc3VtbWFyeSI6IHB5dGVzdF9yZXN1bHRzX3N1bW1hcnksCiAgICAgICAgImNvdmVyYWdlIjogY292ZXJhZ2UsCiAgICAgICAgImNvbmRhIjogY29uZGEsCiAgICAgICAgInNldGVudiI6IHNldGVudiwKICAgICAgICAiZGlzcGxheSI6IGRpc3BsYXksCiAgICAgICAgImNhY2hlLXBhdGgiOiBjYWNoZV9wYXRoLAogICAgICAgICJjYWNoZS1rZXkiOiBjYWNoZV9rZXksCiAgICAgICAgImNhY2hlLXJlc3RvcmUta2V5cyI6IGNhY2hlX3Jlc3RvcmVfa2V5cywKICAgICAgICAiYXJ0aWZhY3QtcGF0aCI6IGFydGlmYWN0X3BhdGgsCiAgICAgICAgImFydGlmYWN0LWFyY2hpdmUiOiBhcnRpZmFjdF9hcmNoaXZlLAogICAgICAgICJhcnRpZmFjdC1pbmNsdWRlLWhpZGRlbi1maWxlcyI6IGFydGlmYWN0X2luY2x1ZGVfaGlkZGVuX2ZpbGVzLAogICAgICAgICJhcnRpZmFjdC1pZi1uby1maWxlcy1mb3VuZCI6IGFydGlmYWN0X2lmX25vX2ZpbGVzX2ZvdW5kLAogICAgICAgICJ0aW1lb3V0LW1pbnV0ZXMiOiB0aW1lb3V0X21pbnV0ZXMsCiAgICB9CgogICAgIyBDcmVhdGUgbWF0cml4CiAgICBtYXRyaXggPSB7ImluY2x1ZGUiOiBbXX0KICAgIGZvciBlbnYgaW4gZW52czoKICAgICAgICBtYXRyaXhbImluY2x1ZGUiXS5hcHBlbmQoCiAgICAgICAgICAgIGdldF9tYXRyaXhfaXRlbSgKICAgICAgICAgICAgICAgIGVudiwKICAgICAgICAgICAgICAgIGdsb2JhbF9saWJyYXJpZXM9Z2xvYmFsX2xpYnJhcmllcywKICAgICAgICAgICAgICAgIGdsb2JhbF9zdHJpbmdfcGFyYW1ldGVycz1zdHJpbmdfcGFyYW1ldGVycywKICAgICAgICAgICAgICAgIHJ1bnNfb249ZGVmYXVsdF9ydW5zX29uLAogICAgICAgICAgICAgICAgZGVmYXVsdF9weXRob249ZGVmYXVsdF9weXRob24sCiAgICAgICAgICAgICkKICAgICAgICApCgogICAgIyBPdXRwdXQgbWF0cml4CiAgICBwcmludChqc29uLmR1bXBzKG1hdHJpeCwgaW5kZW50PTIpKQogICAgd2l0aCBvcGVuKG9zLmVudmlyb25bIkdJVEhVQl9PVVRQVVQiXSwgImEiKSBhcyBmOgogICAgICAgIGYud3JpdGUoZiJtYXRyaXg9e2pzb24uZHVtcHMobWF0cml4KX1cbiIpCgoKZGVmIGdldF9tYXRyaXhfaXRlbShlbnYsIGdsb2JhbF9saWJyYXJpZXMsIGdsb2JhbF9zdHJpbmdfcGFyYW1ldGVycywgcnVuc19vbiwgZGVmYXVsdF9weXRob24pOgoKICAgICMgZGVmaW5lIHNwZWMgZm9yIGVhY2ggbWF0cml4IGluY2x1ZGUgKCsgZ2xvYmFsX3N0cmluZ19wYXJhbWV0ZXJzKQogICAgaXRlbSA9IHsKICAgICAgICAib3MiOiBOb25lLAogICAgICAgICJ0b3hlbnYiOiBOb25lLAogICAgICAgICJweXRob25fdmVyc2lvbiI6IE5vbmUsCiAgICAgICAgIm5hbWUiOiBOb25lLAogICAgICAgICJweXRlc3RfZmxhZyI6IE5vbmUsCiAgICAgICAgImxpYnJhcmllc19icmV3IjogTm9uZSwKICAgICAgICAibGlicmFyaWVzX2JyZXdfY2FzayI6IE5vbmUsCiAgICAgICAgImxpYnJhcmllc19hcHQiOiBOb25lLAogICAgICAgICJsaWJyYXJpZXNfY2hvY28iOiBOb25lLAogICAgICAgICJjYWNoZS1wYXRoIjogTm9uZSwKICAgICAgICAiY2FjaGUta2V5IjogTm9uZSwKICAgICAgICAiY2FjaGUtcmVzdG9yZS1rZXlzIjogTm9uZSwKICAgICAgICAiYXJ0aWZhY3QtbmFtZSI6IE5vbmUsCiAgICAgICAgImFydGlmYWN0LXBhdGgiOiBOb25lLAogICAgICAgICJhcnRpZmFjdC1hcmNoaXZlIjogTm9uZSwKICAgICAgICAiYXJ0aWZhY3QtaW5jbHVkZS1oaWRkZW4tZmlsZXMiOiBOb25lLAogICAgICAgICJhcnRpZmFjdC1pZi1uby1maWxlcy1mb3VuZCI6IE5vbmUsCiAgICAgICAgInRpbWVvdXQtbWludXRlcyI6IE5vbmUsCiAgICB9CiAgICBmb3Igc3RyaW5nX3BhcmFtLCBkZWZhdWx0IGluIGdsb2JhbF9zdHJpbmdfcGFyYW1ldGVycy5pdGVtcygpOgogICAgICAgIGVudl92YWx1ZSA9IGVudi5nZXQoc3RyaW5nX3BhcmFtKQogICAgICAgIGl0ZW1bc3RyaW5nX3BhcmFtXSA9IGRlZmF1bHQgaWYgZW52X3ZhbHVlIGlzIE5vbmUgZWxzZSBlbnZfdmFsdWUKCiAgICAjIHNldCBvcyBhbmQgdG94ZW52CiAgICBmb3IgaywgdiBpbiBydW5zX29uLml0ZW1zKCk6CiAgICAgICAgaWYgayBpbiBlbnY6CiAgICAgICAgICAgIHBsYXRmb3JtID0gawogICAgICAgICAgICBpdGVtWyJvcyJdID0gZW52LmdldCgicnVucy1vbiIsIHYpCiAgICAgICAgICAgIGl0ZW1bInRveGVudiJdID0gZW52W2tdCiAgICBhc3NlcnQgaXRlbVsib3MiXSBpcyBub3QgTm9uZSBhbmQgaXRlbVsidG94ZW52Il0gaXMgbm90IE5vbmUKCiAgICAjIHNldCBweXRob25fdmVyc2lvbgogICAgcHl0aG9uX3ZlcnNpb24gPSBlbnYuZ2V0KCJweXRob24tdmVyc2lvbiIpCiAgICBtID0gcmUuc2VhcmNoKCJecHkoMnwzKShbMC05XSt0PykiLCBpdGVtWyJ0b3hlbnYiXSkKICAgIGlmIHB5dGhvbl92ZXJzaW9uIGlzIG5vdCBOb25lOgogICAgICAgIGl0ZW1bInB5dGhvbl92ZXJzaW9uIl0gPSBweXRob25fdmVyc2lvbgogICAgZWxpZiBtIGlzIG5vdCBOb25lOgogICAgICAgIG1ham9yLCBtaW5vciA9IG0uZ3JvdXBzKCkKICAgICAgICBpdGVtWyJweXRob25fdmVyc2lvbiJdID0gZiJ7bWFqb3J9LnttaW5vcn0iCiAgICBlbHNlOgogICAgICAgIGl0ZW1bInB5dGhvbl92ZXJzaW9uIl0gPSBlbnYuZ2V0KCJkZWZhdWx0X3B5dGhvbiIpIG9yIGRlZmF1bHRfcHl0aG9uCgogICAgIyBzZXQgbmFtZQogICAgaXRlbVsibmFtZSJdID0gZW52LmdldCgibmFtZSIpIG9yIGYie2l0ZW1bJ3RveGVudiddfSAoe2l0ZW1bJ29zJ119KSIKCiAgICAjIHNldCBhcnRpZmFjdC1uYW1lIChyZXBsYWNlIGludmFsaWQgcGF0aCBjaGFyYWN0ZXJzKQogICAgaXRlbVsiYXJ0aWZhY3QtbmFtZSJdID0gcmUuc3ViKHIiW1xcIC86PD58Kj9cIiddIiwgIi0iLCBpdGVtWyJuYW1lIl0pCiAgICBpdGVtWyJhcnRpZmFjdC1uYW1lIl0gPSByZS5zdWIociItKyIsICItIiwgaXRlbVsiYXJ0aWZhY3QtbmFtZSJdKQoKICAgICMgc2V0IHB5dGVzdF9mbGFnCiAgICBpdGVtWyJweXRlc3RfZmxhZyJdID0gIiIKICAgIHNlcCA9IHIiXFwiIGlmIHBsYXRmb3JtID09ICJ3aW5kb3dzIiBlbHNlICIvIgogICAgaWYgaXRlbVsicHl0ZXN0Il0gPT0gInRydWUiOgogICAgICAgIGlmIGl0ZW1bInB5dGVzdC1yZXN1bHRzLXN1bW1hcnkiXSA9PSAidHJ1ZSI6CiAgICAgICAgICAgIGl0ZW1bInB5dGVzdF9mbGFnIl0gKz0gcmYiLS1qdW5pdHhtbCAke3tHSVRIVUJfV09SS1NQQUNFfX17c2VwfXJlc3VsdHMueG1sICIKCiAgICAjIHNldCBsaWJyYXJpZXMKICAgIGVudl9saWJyYXJpZXMgPSBlbnYuZ2V0KCJsaWJyYXJpZXMiKQogICAgaWYgaXNpbnN0YW5jZShlbnZfbGlicmFyaWVzLCBzdHIpIGFuZCBsZW4oZW52X2xpYnJhcmllcy5zdHJpcCgpKSA9PSAwOgogICAgICAgIGVudl9saWJyYXJpZXMgPSB7fSAgIyBubyBsaWJyYXJpZXMgcmVxdWVzdGVkIGZvciBlbnZpcm9ubWVudAogICAgbGlicmFyaWVzID0gZ2xvYmFsX2xpYnJhcmllcyBpZiBlbnZfbGlicmFyaWVzIGlzIE5vbmUgZWxzZSBlbnZfbGlicmFyaWVzCiAgICBmb3IgbWFuYWdlciBpbiBbImJyZXciLCAiYnJld19jYXNrIiwgImFwdCIsICJjaG9jbyJdOgogICAgICAgIGl0ZW1bZiJsaWJyYXJpZXNfe21hbmFnZXJ9Il0gPSAiICIuam9pbihsaWJyYXJpZXMuZ2V0KG1hbmFnZXIsIFtdKSkKCiAgICBpZiBpdGVtWyJjb25kYSJdOgogICAgICAgIHdhcm5pbmdzLndhcm4oImBjb25kYWAgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQiKQoKICAgICAgICAjIHNldCAiYXV0byIgY29uZGEgdmFsdWUKICAgICAgICBpZiBpdGVtWyJjb25kYSJdID09ICJhdXRvIjoKICAgICAgICAgICAgaXRlbVsiY29uZGEiXSA9ICJ0cnVlIiBpZiAiY29uZGEiIGluIGl0ZW1bInRveGVudiJdIGVsc2UgImZhbHNlIgoKICAgICAgICAjIGluamVjdCB0b3hkZXBzIGZvciBjb25kYQogICAgICAgIGlmIGl0ZW1bImNvbmRhIl0gPT0gInRydWUiIGFuZCAidG94LWNvbmRhIiBub3QgaW4gaXRlbVsidG94ZGVwcyJdLmxvd2VyKCk6CiAgICAgICAgICAgIGl0ZW1bInRveGRlcHMiXSA9ICgidG94LWNvbmRhICIgKyBpdGVtWyJ0b3hkZXBzIl0pLnN0cmlwKCkKCiAgICAjIG1ha2UgdGltZW91dC1taW51dGVzIGEgbnVtYmVyCiAgICBpdGVtWyJ0aW1lb3V0LW1pbnV0ZXMiXSA9IGludChpdGVtWyJ0aW1lb3V0LW1pbnV0ZXMiXSkKCiAgICAjIHZlcmlmeSB2YWx1ZXMKICAgIGFzc2VydCBpdGVtWyJweXRlc3QiXSBpbiB7InRydWUiLCAiZmFsc2UifQogICAgYXNzZXJ0IGl0ZW1bImNvbmRhIl0gaW4geyJ0cnVlIiwgImZhbHNlIn0KICAgIGFzc2VydCBpdGVtWyJkaXNwbGF5Il0gaW4geyJ0cnVlIiwgImZhbHNlIn0KCiAgICByZXR1cm4gaXRlbQoKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBsb2FkX3RveF90YXJnZXRzKCkK + TOX_MATRIX_SCRIPT: IyAvLy8gc2NyaXB0CiMgcmVxdWlyZXMtcHl0aG9uID0gIj09My4xMiIKIyBkZXBlbmRlbmNpZXMgPSBbCiMgICAgICJjbGljaz09OC4yLjEiLAojICAgICAicHl5YW1sPT02LjAuMiIsCiMgXQojIC8vLwppbXBvcnQganNvbgppbXBvcnQgb3MKaW1wb3J0IHJlCgppbXBvcnQgY2xpY2sKaW1wb3J0IHlhbWwKCgpAY2xpY2suY29tbWFuZCgpCkBjbGljay5vcHRpb24oIi0tZW52cyIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tbGlicmFyaWVzIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1wb3NhcmdzIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS10b3hkZXBzIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS10b3hhcmdzIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1weXRlc3QiLCBkZWZhdWx0PSJ0cnVlIikKQGNsaWNrLm9wdGlvbigiLS1weXRlc3QtcmVzdWx0cy1zdW1tYXJ5IiwgZGVmYXVsdD0iZmFsc2UiKQpAY2xpY2sub3B0aW9uKCItLWNvdmVyYWdlIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1jb25kYS1wYWNrYWdlcyIsIGRlZmF1bHQ9ImF1dG8iKQpAY2xpY2sub3B0aW9uKCItLXNldGVudiIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tZGlzcGxheSIsIGRlZmF1bHQ9ImZhbHNlIikKQGNsaWNrLm9wdGlvbigiLS1jYWNoZS1wYXRoIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1jYWNoZS1rZXkiLCBkZWZhdWx0PSIiKQpAY2xpY2sub3B0aW9uKCItLWNhY2hlLXJlc3RvcmUta2V5cyIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tYXJ0aWZhY3QtcGF0aCIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tYXJ0aWZhY3QtYXJjaGl2ZSIsIGRlZmF1bHQ9InRydWUiKQpAY2xpY2sub3B0aW9uKCItLWFydGlmYWN0LWluY2x1ZGUtaGlkZGVuLWZpbGVzIiwgZGVmYXVsdD0iZmFsc2UiKQpAY2xpY2sub3B0aW9uKCItLWFydGlmYWN0LWlmLW5vLWZpbGVzLWZvdW5kIiwgZGVmYXVsdD0id2FybiIpCkBjbGljay5vcHRpb24oIi0tcnVucy1vbiIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tZGVmYXVsdC1weXRob24iLCBkZWZhdWx0PSIiKQpAY2xpY2sub3B0aW9uKCItLXRpbWVvdXQtbWludXRlcyIsIGRlZmF1bHQ9IjM2MCIpCmRlZiBsb2FkX3RveF90YXJnZXRzKAogICAgZW52cywKICAgIGxpYnJhcmllcywKICAgIHBvc2FyZ3MsCiAgICB0b3hkZXBzLAogICAgdG94YXJncywKICAgIHB5dGVzdCwKICAgIHB5dGVzdF9yZXN1bHRzX3N1bW1hcnksCiAgICBjb3ZlcmFnZSwKICAgIGNvbmRhX3BhY2thZ2VzLAogICAgc2V0ZW52LAogICAgZGlzcGxheSwKICAgIGNhY2hlX3BhdGgsCiAgICBjYWNoZV9rZXksCiAgICBjYWNoZV9yZXN0b3JlX2tleXMsCiAgICBhcnRpZmFjdF9wYXRoLAogICAgYXJ0aWZhY3RfYXJjaGl2ZSwKICAgIGFydGlmYWN0X2luY2x1ZGVfaGlkZGVuX2ZpbGVzLAogICAgYXJ0aWZhY3RfaWZfbm9fZmlsZXNfZm91bmQsCiAgICBydW5zX29uLAogICAgZGVmYXVsdF9weXRob24sCiAgICB0aW1lb3V0X21pbnV0ZXMsCik6CiAgICAiIiJTY3JpcHQgdG8gbG9hZCB0b3ggdGFyZ2V0cyBmb3IgR2l0SHViIEFjdGlvbnMgd29ya2Zsb3cuIiIiCiAgICAjIExvYWQgZW52cyBjb25maWcKICAgIGVudnMgPSB5YW1sLmxvYWQoZW52cy5yZXBsYWNlKCJcXG4iLCAiXG4iKSwgTG9hZGVyPXlhbWwuQmFzZUxvYWRlcikKICAgIHByaW50KGpzb24uZHVtcHMoZW52cywgaW5kZW50PTIpKQoKICAgICMgTG9hZCBnbG9iYWwgbGlicmFyaWVzIGNvbmZpZwogICAgZ2xvYmFsX2xpYnJhcmllcyA9IHsKICAgICAgICAiYnJldyI6IFtdLAogICAgICAgICJicmV3LWNhc2siOiBbXSwKICAgICAgICAiYXB0IjogW10sCiAgICAgICAgImNob2NvIjogW10sCiAgICB9CiAgICBsaWJyYXJpZXMgPSB5YW1sLmxvYWQobGlicmFyaWVzLCBMb2FkZXI9eWFtbC5CYXNlTG9hZGVyKQogICAgaWYgbGlicmFyaWVzIGlzIG5vdCBOb25lOgogICAgICAgIGdsb2JhbF9saWJyYXJpZXMudXBkYXRlKGxpYnJhcmllcykKICAgIHByaW50KGpzb24uZHVtcHMoZ2xvYmFsX2xpYnJhcmllcywgaW5kZW50PTIpKQoKICAgICMgRGVmYXVsdCBpbWFnZXMgdG8gdXNlIGZvciBydW5uZXJzCiAgICBkZWZhdWx0X3J1bnNfb24gPSB7CiAgICAgICAgImxpbnV4IjogInVidW50dS1sYXRlc3QiLAogICAgICAgICJtYWNvcyI6ICJtYWNvcy1sYXRlc3QiLAogICAgICAgICJ3aW5kb3dzIjogIndpbmRvd3MtbGF0ZXN0IiwKICAgIH0KICAgIGN1c3RvbV9ydW5zX29uID0geWFtbC5sb2FkKHJ1bnNfb24sIExvYWRlcj15YW1sLkJhc2VMb2FkZXIpCiAgICBpZiBpc2luc3RhbmNlKGN1c3RvbV9ydW5zX29uLCBkaWN0KToKICAgICAgICBkZWZhdWx0X3J1bnNfb24udXBkYXRlKGN1c3RvbV9ydW5zX29uKQogICAgcHJpbnQoanNvbi5kdW1wcyhkZWZhdWx0X3J1bnNfb24sIGluZGVudD0yKSkKCiAgICAjIERlZmF1bHQgc3RyaW5nIHBhcmFtZXRlcnMgd2hpY2ggY2FuIGJlIG92ZXJ3cml0dGVuIGJ5IGVhY2ggZW52CiAgICBzdHJpbmdfcGFyYW1ldGVycyA9IHsKICAgICAgICAicG9zYXJncyI6IHBvc2FyZ3MsCiAgICAgICAgInRveGRlcHMiOiB0b3hkZXBzLAogICAgICAgICJ0b3hhcmdzIjogdG94YXJncywKICAgICAgICAicHl0ZXN0IjogcHl0ZXN0LAogICAgICAgICJweXRlc3QtcmVzdWx0cy1zdW1tYXJ5IjogcHl0ZXN0X3Jlc3VsdHNfc3VtbWFyeSwKICAgICAgICAiY292ZXJhZ2UiOiBjb3ZlcmFnZSwKICAgICAgICAiY29uZGEtcGFja2FnZXMiOiBjb25kYV9wYWNrYWdlcywKICAgICAgICAic2V0ZW52Ijogc2V0ZW52LAogICAgICAgICJkaXNwbGF5IjogZGlzcGxheSwKICAgICAgICAiY2FjaGUtcGF0aCI6IGNhY2hlX3BhdGgsCiAgICAgICAgImNhY2hlLWtleSI6IGNhY2hlX2tleSwKICAgICAgICAiY2FjaGUtcmVzdG9yZS1rZXlzIjogY2FjaGVfcmVzdG9yZV9rZXlzLAogICAgICAgICJhcnRpZmFjdC1wYXRoIjogYXJ0aWZhY3RfcGF0aCwKICAgICAgICAiYXJ0aWZhY3QtYXJjaGl2ZSI6IGFydGlmYWN0X2FyY2hpdmUsCiAgICAgICAgImFydGlmYWN0LWluY2x1ZGUtaGlkZGVuLWZpbGVzIjogYXJ0aWZhY3RfaW5jbHVkZV9oaWRkZW5fZmlsZXMsCiAgICAgICAgImFydGlmYWN0LWlmLW5vLWZpbGVzLWZvdW5kIjogYXJ0aWZhY3RfaWZfbm9fZmlsZXNfZm91bmQsCiAgICAgICAgInRpbWVvdXQtbWludXRlcyI6IHRpbWVvdXRfbWludXRlcywKICAgIH0KCiAgICAjIENyZWF0ZSBtYXRyaXgKICAgIG1hdHJpeCA9IHsiaW5jbHVkZSI6IFtdfQogICAgZm9yIGVudiBpbiBlbnZzOgogICAgICAgIG1hdHJpeFsiaW5jbHVkZSJdLmFwcGVuZCgKICAgICAgICAgICAgZ2V0X21hdHJpeF9pdGVtKAogICAgICAgICAgICAgICAgZW52LAogICAgICAgICAgICAgICAgZ2xvYmFsX2xpYnJhcmllcz1nbG9iYWxfbGlicmFyaWVzLAogICAgICAgICAgICAgICAgZ2xvYmFsX3N0cmluZ19wYXJhbWV0ZXJzPXN0cmluZ19wYXJhbWV0ZXJzLAogICAgICAgICAgICAgICAgcnVuc19vbj1kZWZhdWx0X3J1bnNfb24sCiAgICAgICAgICAgICAgICBkZWZhdWx0X3B5dGhvbj1kZWZhdWx0X3B5dGhvbiwKICAgICAgICAgICAgKQogICAgICAgICkKCiAgICAjIE91dHB1dCBtYXRyaXgKICAgIHByaW50KGpzb24uZHVtcHMobWF0cml4LCBpbmRlbnQ9MikpCiAgICB3aXRoIG9wZW4ob3MuZW52aXJvblsiR0lUSFVCX09VVFBVVCJdLCAiYSIpIGFzIGY6CiAgICAgICAgZi53cml0ZShmIm1hdHJpeD17anNvbi5kdW1wcyhtYXRyaXgpfVxuIikKCgpkZWYgZ2V0X21hdHJpeF9pdGVtKGVudiwgZ2xvYmFsX2xpYnJhcmllcywgZ2xvYmFsX3N0cmluZ19wYXJhbWV0ZXJzLCBydW5zX29uLCBkZWZhdWx0X3B5dGhvbik6CgogICAgIyBkZWZpbmUgc3BlYyBmb3IgZWFjaCBtYXRyaXggaW5jbHVkZSAoKyBnbG9iYWxfc3RyaW5nX3BhcmFtZXRlcnMpCiAgICBpdGVtID0gewogICAgICAgICJvcyI6IE5vbmUsCiAgICAgICAgInRveGVudiI6IE5vbmUsCiAgICAgICAgInB5dGhvbl92ZXJzaW9uIjogTm9uZSwKICAgICAgICAibmFtZSI6IE5vbmUsCiAgICAgICAgInB5dGVzdF9mbGFnIjogTm9uZSwKICAgICAgICAibGlicmFyaWVzX2JyZXciOiBOb25lLAogICAgICAgICJsaWJyYXJpZXNfYnJld19jYXNrIjogTm9uZSwKICAgICAgICAibGlicmFyaWVzX2FwdCI6IE5vbmUsCiAgICAgICAgImxpYnJhcmllc19jaG9jbyI6IE5vbmUsCiAgICAgICAgImNhY2hlLXBhdGgiOiBOb25lLAogICAgICAgICJjYWNoZS1rZXkiOiBOb25lLAogICAgICAgICJjYWNoZS1yZXN0b3JlLWtleXMiOiBOb25lLAogICAgICAgICJhcnRpZmFjdC1uYW1lIjogTm9uZSwKICAgICAgICAiYXJ0aWZhY3QtcGF0aCI6IE5vbmUsCiAgICAgICAgImFydGlmYWN0LWFyY2hpdmUiOiBOb25lLAogICAgICAgICJhcnRpZmFjdC1pbmNsdWRlLWhpZGRlbi1maWxlcyI6IE5vbmUsCiAgICAgICAgImFydGlmYWN0LWlmLW5vLWZpbGVzLWZvdW5kIjogTm9uZSwKICAgICAgICAidGltZW91dC1taW51dGVzIjogTm9uZSwKICAgIH0KICAgIGZvciBzdHJpbmdfcGFyYW0sIGRlZmF1bHQgaW4gZ2xvYmFsX3N0cmluZ19wYXJhbWV0ZXJzLml0ZW1zKCk6CiAgICAgICAgZW52X3ZhbHVlID0gZW52LmdldChzdHJpbmdfcGFyYW0pCiAgICAgICAgaXRlbVtzdHJpbmdfcGFyYW1dID0gZGVmYXVsdCBpZiBlbnZfdmFsdWUgaXMgTm9uZSBlbHNlIGVudl92YWx1ZQoKICAgICMgc2V0IG9zIGFuZCB0b3hlbnYKICAgIGZvciBrLCB2IGluIHJ1bnNfb24uaXRlbXMoKToKICAgICAgICBpZiBrIGluIGVudjoKICAgICAgICAgICAgcGxhdGZvcm0gPSBrCiAgICAgICAgICAgIGl0ZW1bIm9zIl0gPSBlbnYuZ2V0KCJydW5zLW9uIiwgdikKICAgICAgICAgICAgaXRlbVsidG94ZW52Il0gPSBlbnZba10KICAgIGFzc2VydCBpdGVtWyJvcyJdIGlzIG5vdCBOb25lIGFuZCBpdGVtWyJ0b3hlbnYiXSBpcyBub3QgTm9uZQoKICAgICMgc2V0IHB5dGhvbl92ZXJzaW9uCiAgICBweXRob25fdmVyc2lvbiA9IGVudi5nZXQoInB5dGhvbi12ZXJzaW9uIikKICAgIG0gPSByZS5zZWFyY2goIl5weSgyfDMpKFswLTldK3Q/KSIsIGl0ZW1bInRveGVudiJdKQogICAgaWYgcHl0aG9uX3ZlcnNpb24gaXMgbm90IE5vbmU6CiAgICAgICAgaXRlbVsicHl0aG9uX3ZlcnNpb24iXSA9IHB5dGhvbl92ZXJzaW9uCiAgICBlbGlmIG0gaXMgbm90IE5vbmU6CiAgICAgICAgbWFqb3IsIG1pbm9yID0gbS5ncm91cHMoKQogICAgICAgIGl0ZW1bInB5dGhvbl92ZXJzaW9uIl0gPSBmInttYWpvcn0ue21pbm9yfSIKICAgIGVsc2U6CiAgICAgICAgaXRlbVsicHl0aG9uX3ZlcnNpb24iXSA9IGVudi5nZXQoImRlZmF1bHRfcHl0aG9uIikgb3IgZGVmYXVsdF9weXRob24KCiAgICAjIHNldCBuYW1lCiAgICBpdGVtWyJuYW1lIl0gPSBlbnYuZ2V0KCJuYW1lIikgb3IgZiJ7aXRlbVsndG94ZW52J119ICh7aXRlbVsnb3MnXX0pIgoKICAgICMgc2V0IGFydGlmYWN0LW5hbWUgKHJlcGxhY2UgaW52YWxpZCBwYXRoIGNoYXJhY3RlcnMpCiAgICBpdGVtWyJhcnRpZmFjdC1uYW1lIl0gPSByZS5zdWIociJbXFwgLzo8PnwqP1wiJ10iLCAiLSIsIGl0ZW1bIm5hbWUiXSkKICAgIGl0ZW1bImFydGlmYWN0LW5hbWUiXSA9IHJlLnN1YihyIi0rIiwgIi0iLCBpdGVtWyJhcnRpZmFjdC1uYW1lIl0pCgogICAgIyBzZXQgcHl0ZXN0X2ZsYWcKICAgIGl0ZW1bInB5dGVzdF9mbGFnIl0gPSAiIgogICAgc2VwID0gciJcXCIgaWYgcGxhdGZvcm0gPT0gIndpbmRvd3MiIGVsc2UgIi8iCiAgICBpZiBpdGVtWyJweXRlc3QiXSA9PSAidHJ1ZSI6CiAgICAgICAgaWYgaXRlbVsicHl0ZXN0LXJlc3VsdHMtc3VtbWFyeSJdID09ICJ0cnVlIjoKICAgICAgICAgICAgaXRlbVsicHl0ZXN0X2ZsYWciXSArPSByZiItLWp1bml0eG1sICR7e0dJVEhVQl9XT1JLU1BBQ0V9fXtzZXB9cmVzdWx0cy54bWwgIgoKICAgICMgc2V0IGxpYnJhcmllcwogICAgZW52X2xpYnJhcmllcyA9IGVudi5nZXQoImxpYnJhcmllcyIpCiAgICBpZiBpc2luc3RhbmNlKGVudl9saWJyYXJpZXMsIHN0cikgYW5kIGxlbihlbnZfbGlicmFyaWVzLnN0cmlwKCkpID09IDA6CiAgICAgICAgZW52X2xpYnJhcmllcyA9IHt9ICAjIG5vIGxpYnJhcmllcyByZXF1ZXN0ZWQgZm9yIGVudmlyb25tZW50CiAgICBsaWJyYXJpZXMgPSBnbG9iYWxfbGlicmFyaWVzIGlmIGVudl9saWJyYXJpZXMgaXMgTm9uZSBlbHNlIGVudl9saWJyYXJpZXMKICAgIGZvciBtYW5hZ2VyIGluIFsiYnJldyIsICJicmV3X2Nhc2siLCAiYXB0IiwgImNob2NvIl06CiAgICAgICAgaXRlbVtmImxpYnJhcmllc197bWFuYWdlcn0iXSA9ICIgIi5qb2luKGxpYnJhcmllcy5nZXQobWFuYWdlciwgW10pKQoKICAgICMgbWFrZSB0aW1lb3V0LW1pbnV0ZXMgYSBudW1iZXIKICAgIGl0ZW1bInRpbWVvdXQtbWludXRlcyJdID0gaW50KGl0ZW1bInRpbWVvdXQtbWludXRlcyJdKQoKICAgICMgdmVyaWZ5IHZhbHVlcwogICAgYXNzZXJ0IGl0ZW1bInB5dGVzdCJdIGluIHsidHJ1ZSIsICJmYWxzZSJ9CiAgICBhc3NlcnQgaXRlbVsiZGlzcGxheSJdIGluIHsidHJ1ZSIsICJmYWxzZSJ9CgogICAgcmV0dXJuIGl0ZW0KCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgbG9hZF90b3hfdGFyZ2V0cygpCg== - run: cat tox_matrix.py - id: set-outputs run: | # zizmor: ignore[template-injection] @@ -182,7 +182,7 @@ jobs: --posargs "${{ inputs.posargs }}" --toxdeps "${{ inputs.toxdeps }}" \ --toxargs "${{ inputs.toxargs }}" --pytest "${{ inputs.pytest }}" \ --pytest-results-summary "${{ inputs.pytest-results-summary }}" \ - --coverage "${{ inputs.coverage }}" --conda "${{ inputs.conda }}" \ + --coverage "${{ inputs.coverage }}" --conda-packages "${{ inputs.conda-packages }}" \ --setenv "${{ inputs.setenv }}" \ --display "${{ inputs.display }}" --cache-path "${{ inputs.cache-path }}" \ --cache-key "${{ inputs.cache-key }}" --cache-restore-keys "${{ inputs.cache-restore-keys }}" \ @@ -236,15 +236,15 @@ jobs: choco: ${{ matrix.libraries_choco }} - name: Setup Python ${{ matrix.python_version }} - if: ${{ matrix.conda != 'true' }} + if: ${{ matrix.conda_packages == '' }} uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # 8.1.0 with: python-version: ${{ matrix.python_version }} activate-environment: "true" ignore-empty-workdir: "true" - - name: Setup conda (deprecated) - if: ${{ matrix.conda == 'true' }} + - name: Setup Micromamba with Python ${{ matrix.python_version }} + if: ${{ matrix.conda_packages != '' }} uses: mamba-org/setup-micromamba@d7c9bd84e824b79d2af72a2d4196c7f4300d3476 # v3.0.0 with: environment-name: test @@ -253,19 +253,13 @@ jobs: - conda-forge use_uv: true create-args: >- - conda python=${{ matrix.python_version }} uv=0.10.6 + ${{ inputs.conda_packages }} init-shell: bash cache-environment: true cache-downloads: true - - name: warn that using the `conda` parameter is deprecated - if: ${{ matrix.conda == 'true' }} - run: | - echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY - echo "> The conda parameter is deprecated (see https://github.com/OpenAstronomy/github-actions-workflows/issues/354)." >> $GITHUB_STEP_SUMMARY - - id: set-env if: ${{ matrix.setenv != '' }} run: | diff --git a/docs/source/tox.rst b/docs/source/tox.rst index 56c5348..6a2c6e4 100644 --- a/docs/source/tox.rst +++ b/docs/source/tox.rst @@ -218,15 +218,12 @@ To use the token set the ``CODECOV_TOKEN`` environment variable or pass it as a To use oidc you need to give the job the ``id-token: write`` permission, we recommend you set this on the job level not the workflow level, and set ``coverage: codecov-oidc``. -conda -^^^^^ +conda_packages +^^^^^^^^^^^^^^ -Whether to test within a conda environment using ``tox-conda``. Options -are ``'auto'`` (default), ``'true'`` and ``'false'``. +If populated, will set up a conda environment and install the requested packages from `conda-forge`. -If ``'auto'``, conda will be used if the tox environment names contains -“conda”. For example, ``'auto'`` would enable conda for tox environments -named ``py39-conda``, ``conda-test`` or even ``py38-secondary``. +Remember to use `allowlist_externals` in your Tox configuration if using non-Python Conda packages. setenv ^^^^^^ diff --git a/tools/tox_matrix.py b/tools/tox_matrix.py index a1153cf..37ab160 100644 --- a/tools/tox_matrix.py +++ b/tools/tox_matrix.py @@ -8,7 +8,6 @@ import json import os import re -import warnings import click import yaml @@ -23,7 +22,7 @@ @click.option("--pytest", default="true") @click.option("--pytest-results-summary", default="false") @click.option("--coverage", default="") -@click.option("--conda", default="auto") +@click.option("--conda-packages", default="auto") @click.option("--setenv", default="") @click.option("--display", default="false") @click.option("--cache-path", default="") @@ -45,7 +44,7 @@ def load_tox_targets( pytest, pytest_results_summary, coverage, - conda, + conda_packages, setenv, display, cache_path, @@ -95,7 +94,7 @@ def load_tox_targets( "pytest": pytest, "pytest-results-summary": pytest_results_summary, "coverage": coverage, - "conda": conda, + "conda-packages": conda_packages, "setenv": setenv, "display": display, "cache-path": cache_path, @@ -195,23 +194,11 @@ def get_matrix_item(env, global_libraries, global_string_parameters, runs_on, de for manager in ["brew", "brew_cask", "apt", "choco"]: item[f"libraries_{manager}"] = " ".join(libraries.get(manager, [])) - if item["conda"]: - warnings.warn("`conda` parameter is deprecated") - - # set "auto" conda value - if item["conda"] == "auto": - item["conda"] = "true" if "conda" in item["toxenv"] else "false" - - # inject toxdeps for conda - if item["conda"] == "true" and "tox-conda" not in item["toxdeps"].lower(): - item["toxdeps"] = ("tox-conda " + item["toxdeps"]).strip() - # make timeout-minutes a number item["timeout-minutes"] = int(item["timeout-minutes"]) # verify values assert item["pytest"] in {"true", "false"} - assert item["conda"] in {"true", "false"} assert item["display"] in {"true", "false"} return item From 723e3eff54123ad6daa589d255102692ceee06b3 Mon Sep 17 00:00:00 2001 From: zacharyburnett Date: Wed, 3 Jun 2026 14:29:55 -0400 Subject: [PATCH 2/8] fix called wrong context --- .github/workflows/tox.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tox.yml b/.github/workflows/tox.yml index 17c7e1e..a873cf1 100644 --- a/.github/workflows/tox.yml +++ b/.github/workflows/tox.yml @@ -236,7 +236,7 @@ jobs: choco: ${{ matrix.libraries_choco }} - name: Setup Python ${{ matrix.python_version }} - if: ${{ matrix.conda_packages == '' }} + if: inputs.conda_packages == '' uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # 8.1.0 with: python-version: ${{ matrix.python_version }} @@ -244,7 +244,7 @@ jobs: ignore-empty-workdir: "true" - name: Setup Micromamba with Python ${{ matrix.python_version }} - if: ${{ matrix.conda_packages != '' }} + if: inputs.conda_packages != '' uses: mamba-org/setup-micromamba@d7c9bd84e824b79d2af72a2d4196c7f4300d3476 # v3.0.0 with: environment-name: test From 3955ef1c866a1bbb7553553ffbc6413545624847 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 18:30:49 +0000 Subject: [PATCH 3/8] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci From 66816179b8772521433a7d586782547066b01d95 Mon Sep 17 00:00:00 2001 From: zacharyburnett Date: Wed, 3 Jun 2026 14:30:27 -0400 Subject: [PATCH 4/8] add `conda_channels` input --- .github/workflows/tox.yml | 8 ++++++-- docs/source/tox.rst | 10 ++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tox.yml b/.github/workflows/tox.yml index a873cf1..ba45996 100644 --- a/.github/workflows/tox.yml +++ b/.github/workflows/tox.yml @@ -62,6 +62,11 @@ on: description: extra packages to install with `mamba` required: false default: "" + conda_channels: + type: string + description: Conda channel(s) to use when installing packages (separated by commas) + required: false + default: "conda-forge" setenv: description: A map of environment variables to be available when testing required: false @@ -249,8 +254,7 @@ jobs: with: environment-name: test condarc: | - channels: - - conda-forge + channels: [${{ inputs.conda_channels }}] use_uv: true create-args: >- python=${{ matrix.python_version }} diff --git a/docs/source/tox.rst b/docs/source/tox.rst index 6a2c6e4..aabaeca 100644 --- a/docs/source/tox.rst +++ b/docs/source/tox.rst @@ -221,9 +221,15 @@ To use oidc you need to give the job the ``id-token: write`` permission, we reco conda_packages ^^^^^^^^^^^^^^ -If populated, will set up a conda environment and install the requested packages from `conda-forge`. +If populated, will set up a conda environment and install the requested packages from ``conda-forge``. + +Remember to use ``allowlist_externals`` in your Tox configuration if using non-Python Conda packages. -Remember to use `allowlist_externals` in your Tox configuration if using non-Python Conda packages. +conda_channels +^^^^^^^^^^^^^^ + +Conda channel(s) to use with ``conda_packages`` (defaults to ``conda-forge``). +If multiple, make sure they're separated by commas. setenv ^^^^^^ From 95c4096cedfddb3f4ed1f69d7e2ab315fc31d723 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 18:36:42 +0000 Subject: [PATCH 5/8] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- docs/source/tox.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/tox.rst b/docs/source/tox.rst index aabaeca..17f57d4 100644 --- a/docs/source/tox.rst +++ b/docs/source/tox.rst @@ -222,7 +222,7 @@ conda_packages ^^^^^^^^^^^^^^ If populated, will set up a conda environment and install the requested packages from ``conda-forge``. - + Remember to use ``allowlist_externals`` in your Tox configuration if using non-Python Conda packages. conda_channels From 3a274fdc9f1f5508e52600896535e0dfafe2b3b8 Mon Sep 17 00:00:00 2001 From: zacharyburnett Date: Wed, 3 Jun 2026 14:45:18 -0400 Subject: [PATCH 6/8] remove conda test toxenvs --- tox.ini | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/tox.ini b/tox.ini index c4d2ae9..fefbe0b 100644 --- a/tox.ini +++ b/tox.ini @@ -2,7 +2,7 @@ envlist = pep8 py3{10,11,12} - py3{10,11,12}-inputs-{linux,macos,windows,conda,con_da} + py3{10,11,12}-inputs-{linux,macos,windows} default_python py{,py}3{10,13}-python_version libraries @@ -37,9 +37,6 @@ commands = linux: python -c "import platform; assert platform.system() == 'Linux'" macos: python -c "import platform; assert platform.system() == 'Darwin'" windows: python -c "import platform; assert platform.system() == 'Windows'" - # Check is conda is being used - !conda-!con_da: python -c "import os, sys; assert not os.path.exists(os.path.join(sys.prefix, 'conda-meta', 'history'))" - conda,con_da: python -c "import os, sys; assert {posargs} os.path.exists(os.path.join(sys.prefix, 'conda-meta', 'history'))" # Run a command that should only succeed is the library is installed libraries: {posargs} # Verify that setenv is working @@ -59,22 +56,19 @@ description = verify pep8 deps = ruff commands = ruff check . -[testenv:py3{10-16}{,-conda,-tmpdir,-tmpdir_warning}] +[testenv:py3{10-16}{,-tmpdir,-tmpdir_warning}] description = run pytest skip_install = false dependency_groups = test covcheck -conda_deps = pytest changedir = tmpdir,tmpdir_warning: .tmp/{envname} setenv = tmpdir: COVERAGE_FILE={toxinidir}/.coverage 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:build_docs] changedir = docs description = Invoke sphinx-build to build the HTML docs From e7c5a611ba2dfcf5d7a4427354ce686d26cf02b6 Mon Sep 17 00:00:00 2001 From: zacharyburnett Date: Wed, 3 Jun 2026 14:56:10 -0400 Subject: [PATCH 7/8] actually insert conda packages and channels into matrix --- .github/workflows/test_tox.yml | 2 +- .github/workflows/tox.yml | 13 +++++++------ docs/source/tox.rst | 2 +- tools/tox_matrix.py | 10 +++++++++- tox.ini | 2 +- 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/.github/workflows/test_tox.yml b/.github/workflows/test_tox.yml index b9a8478..afc9c9e 100644 --- a/.github/workflows/test_tox.yml +++ b/.github/workflows/test_tox.yml @@ -125,7 +125,7 @@ jobs: test_conda: uses: ./.github/workflows/tox.yml with: - conda_packages: hstcal + conda_packages: requests envs: | - linux: py312 - macos: py311 diff --git a/.github/workflows/tox.yml b/.github/workflows/tox.yml index ba45996..43290ca 100644 --- a/.github/workflows/tox.yml +++ b/.github/workflows/tox.yml @@ -177,7 +177,7 @@ jobs: shell: sh - run: echo $TOX_MATRIX_SCRIPT | base64 --decode > tox_matrix.py env: - TOX_MATRIX_SCRIPT: IyAvLy8gc2NyaXB0CiMgcmVxdWlyZXMtcHl0aG9uID0gIj09My4xMiIKIyBkZXBlbmRlbmNpZXMgPSBbCiMgICAgICJjbGljaz09OC4yLjEiLAojICAgICAicHl5YW1sPT02LjAuMiIsCiMgXQojIC8vLwppbXBvcnQganNvbgppbXBvcnQgb3MKaW1wb3J0IHJlCgppbXBvcnQgY2xpY2sKaW1wb3J0IHlhbWwKCgpAY2xpY2suY29tbWFuZCgpCkBjbGljay5vcHRpb24oIi0tZW52cyIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tbGlicmFyaWVzIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1wb3NhcmdzIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS10b3hkZXBzIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS10b3hhcmdzIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1weXRlc3QiLCBkZWZhdWx0PSJ0cnVlIikKQGNsaWNrLm9wdGlvbigiLS1weXRlc3QtcmVzdWx0cy1zdW1tYXJ5IiwgZGVmYXVsdD0iZmFsc2UiKQpAY2xpY2sub3B0aW9uKCItLWNvdmVyYWdlIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1jb25kYS1wYWNrYWdlcyIsIGRlZmF1bHQ9ImF1dG8iKQpAY2xpY2sub3B0aW9uKCItLXNldGVudiIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tZGlzcGxheSIsIGRlZmF1bHQ9ImZhbHNlIikKQGNsaWNrLm9wdGlvbigiLS1jYWNoZS1wYXRoIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1jYWNoZS1rZXkiLCBkZWZhdWx0PSIiKQpAY2xpY2sub3B0aW9uKCItLWNhY2hlLXJlc3RvcmUta2V5cyIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tYXJ0aWZhY3QtcGF0aCIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tYXJ0aWZhY3QtYXJjaGl2ZSIsIGRlZmF1bHQ9InRydWUiKQpAY2xpY2sub3B0aW9uKCItLWFydGlmYWN0LWluY2x1ZGUtaGlkZGVuLWZpbGVzIiwgZGVmYXVsdD0iZmFsc2UiKQpAY2xpY2sub3B0aW9uKCItLWFydGlmYWN0LWlmLW5vLWZpbGVzLWZvdW5kIiwgZGVmYXVsdD0id2FybiIpCkBjbGljay5vcHRpb24oIi0tcnVucy1vbiIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tZGVmYXVsdC1weXRob24iLCBkZWZhdWx0PSIiKQpAY2xpY2sub3B0aW9uKCItLXRpbWVvdXQtbWludXRlcyIsIGRlZmF1bHQ9IjM2MCIpCmRlZiBsb2FkX3RveF90YXJnZXRzKAogICAgZW52cywKICAgIGxpYnJhcmllcywKICAgIHBvc2FyZ3MsCiAgICB0b3hkZXBzLAogICAgdG94YXJncywKICAgIHB5dGVzdCwKICAgIHB5dGVzdF9yZXN1bHRzX3N1bW1hcnksCiAgICBjb3ZlcmFnZSwKICAgIGNvbmRhX3BhY2thZ2VzLAogICAgc2V0ZW52LAogICAgZGlzcGxheSwKICAgIGNhY2hlX3BhdGgsCiAgICBjYWNoZV9rZXksCiAgICBjYWNoZV9yZXN0b3JlX2tleXMsCiAgICBhcnRpZmFjdF9wYXRoLAogICAgYXJ0aWZhY3RfYXJjaGl2ZSwKICAgIGFydGlmYWN0X2luY2x1ZGVfaGlkZGVuX2ZpbGVzLAogICAgYXJ0aWZhY3RfaWZfbm9fZmlsZXNfZm91bmQsCiAgICBydW5zX29uLAogICAgZGVmYXVsdF9weXRob24sCiAgICB0aW1lb3V0X21pbnV0ZXMsCik6CiAgICAiIiJTY3JpcHQgdG8gbG9hZCB0b3ggdGFyZ2V0cyBmb3IgR2l0SHViIEFjdGlvbnMgd29ya2Zsb3cuIiIiCiAgICAjIExvYWQgZW52cyBjb25maWcKICAgIGVudnMgPSB5YW1sLmxvYWQoZW52cy5yZXBsYWNlKCJcXG4iLCAiXG4iKSwgTG9hZGVyPXlhbWwuQmFzZUxvYWRlcikKICAgIHByaW50KGpzb24uZHVtcHMoZW52cywgaW5kZW50PTIpKQoKICAgICMgTG9hZCBnbG9iYWwgbGlicmFyaWVzIGNvbmZpZwogICAgZ2xvYmFsX2xpYnJhcmllcyA9IHsKICAgICAgICAiYnJldyI6IFtdLAogICAgICAgICJicmV3LWNhc2siOiBbXSwKICAgICAgICAiYXB0IjogW10sCiAgICAgICAgImNob2NvIjogW10sCiAgICB9CiAgICBsaWJyYXJpZXMgPSB5YW1sLmxvYWQobGlicmFyaWVzLCBMb2FkZXI9eWFtbC5CYXNlTG9hZGVyKQogICAgaWYgbGlicmFyaWVzIGlzIG5vdCBOb25lOgogICAgICAgIGdsb2JhbF9saWJyYXJpZXMudXBkYXRlKGxpYnJhcmllcykKICAgIHByaW50KGpzb24uZHVtcHMoZ2xvYmFsX2xpYnJhcmllcywgaW5kZW50PTIpKQoKICAgICMgRGVmYXVsdCBpbWFnZXMgdG8gdXNlIGZvciBydW5uZXJzCiAgICBkZWZhdWx0X3J1bnNfb24gPSB7CiAgICAgICAgImxpbnV4IjogInVidW50dS1sYXRlc3QiLAogICAgICAgICJtYWNvcyI6ICJtYWNvcy1sYXRlc3QiLAogICAgICAgICJ3aW5kb3dzIjogIndpbmRvd3MtbGF0ZXN0IiwKICAgIH0KICAgIGN1c3RvbV9ydW5zX29uID0geWFtbC5sb2FkKHJ1bnNfb24sIExvYWRlcj15YW1sLkJhc2VMb2FkZXIpCiAgICBpZiBpc2luc3RhbmNlKGN1c3RvbV9ydW5zX29uLCBkaWN0KToKICAgICAgICBkZWZhdWx0X3J1bnNfb24udXBkYXRlKGN1c3RvbV9ydW5zX29uKQogICAgcHJpbnQoanNvbi5kdW1wcyhkZWZhdWx0X3J1bnNfb24sIGluZGVudD0yKSkKCiAgICAjIERlZmF1bHQgc3RyaW5nIHBhcmFtZXRlcnMgd2hpY2ggY2FuIGJlIG92ZXJ3cml0dGVuIGJ5IGVhY2ggZW52CiAgICBzdHJpbmdfcGFyYW1ldGVycyA9IHsKICAgICAgICAicG9zYXJncyI6IHBvc2FyZ3MsCiAgICAgICAgInRveGRlcHMiOiB0b3hkZXBzLAogICAgICAgICJ0b3hhcmdzIjogdG94YXJncywKICAgICAgICAicHl0ZXN0IjogcHl0ZXN0LAogICAgICAgICJweXRlc3QtcmVzdWx0cy1zdW1tYXJ5IjogcHl0ZXN0X3Jlc3VsdHNfc3VtbWFyeSwKICAgICAgICAiY292ZXJhZ2UiOiBjb3ZlcmFnZSwKICAgICAgICAiY29uZGEtcGFja2FnZXMiOiBjb25kYV9wYWNrYWdlcywKICAgICAgICAic2V0ZW52Ijogc2V0ZW52LAogICAgICAgICJkaXNwbGF5IjogZGlzcGxheSwKICAgICAgICAiY2FjaGUtcGF0aCI6IGNhY2hlX3BhdGgsCiAgICAgICAgImNhY2hlLWtleSI6IGNhY2hlX2tleSwKICAgICAgICAiY2FjaGUtcmVzdG9yZS1rZXlzIjogY2FjaGVfcmVzdG9yZV9rZXlzLAogICAgICAgICJhcnRpZmFjdC1wYXRoIjogYXJ0aWZhY3RfcGF0aCwKICAgICAgICAiYXJ0aWZhY3QtYXJjaGl2ZSI6IGFydGlmYWN0X2FyY2hpdmUsCiAgICAgICAgImFydGlmYWN0LWluY2x1ZGUtaGlkZGVuLWZpbGVzIjogYXJ0aWZhY3RfaW5jbHVkZV9oaWRkZW5fZmlsZXMsCiAgICAgICAgImFydGlmYWN0LWlmLW5vLWZpbGVzLWZvdW5kIjogYXJ0aWZhY3RfaWZfbm9fZmlsZXNfZm91bmQsCiAgICAgICAgInRpbWVvdXQtbWludXRlcyI6IHRpbWVvdXRfbWludXRlcywKICAgIH0KCiAgICAjIENyZWF0ZSBtYXRyaXgKICAgIG1hdHJpeCA9IHsiaW5jbHVkZSI6IFtdfQogICAgZm9yIGVudiBpbiBlbnZzOgogICAgICAgIG1hdHJpeFsiaW5jbHVkZSJdLmFwcGVuZCgKICAgICAgICAgICAgZ2V0X21hdHJpeF9pdGVtKAogICAgICAgICAgICAgICAgZW52LAogICAgICAgICAgICAgICAgZ2xvYmFsX2xpYnJhcmllcz1nbG9iYWxfbGlicmFyaWVzLAogICAgICAgICAgICAgICAgZ2xvYmFsX3N0cmluZ19wYXJhbWV0ZXJzPXN0cmluZ19wYXJhbWV0ZXJzLAogICAgICAgICAgICAgICAgcnVuc19vbj1kZWZhdWx0X3J1bnNfb24sCiAgICAgICAgICAgICAgICBkZWZhdWx0X3B5dGhvbj1kZWZhdWx0X3B5dGhvbiwKICAgICAgICAgICAgKQogICAgICAgICkKCiAgICAjIE91dHB1dCBtYXRyaXgKICAgIHByaW50KGpzb24uZHVtcHMobWF0cml4LCBpbmRlbnQ9MikpCiAgICB3aXRoIG9wZW4ob3MuZW52aXJvblsiR0lUSFVCX09VVFBVVCJdLCAiYSIpIGFzIGY6CiAgICAgICAgZi53cml0ZShmIm1hdHJpeD17anNvbi5kdW1wcyhtYXRyaXgpfVxuIikKCgpkZWYgZ2V0X21hdHJpeF9pdGVtKGVudiwgZ2xvYmFsX2xpYnJhcmllcywgZ2xvYmFsX3N0cmluZ19wYXJhbWV0ZXJzLCBydW5zX29uLCBkZWZhdWx0X3B5dGhvbik6CgogICAgIyBkZWZpbmUgc3BlYyBmb3IgZWFjaCBtYXRyaXggaW5jbHVkZSAoKyBnbG9iYWxfc3RyaW5nX3BhcmFtZXRlcnMpCiAgICBpdGVtID0gewogICAgICAgICJvcyI6IE5vbmUsCiAgICAgICAgInRveGVudiI6IE5vbmUsCiAgICAgICAgInB5dGhvbl92ZXJzaW9uIjogTm9uZSwKICAgICAgICAibmFtZSI6IE5vbmUsCiAgICAgICAgInB5dGVzdF9mbGFnIjogTm9uZSwKICAgICAgICAibGlicmFyaWVzX2JyZXciOiBOb25lLAogICAgICAgICJsaWJyYXJpZXNfYnJld19jYXNrIjogTm9uZSwKICAgICAgICAibGlicmFyaWVzX2FwdCI6IE5vbmUsCiAgICAgICAgImxpYnJhcmllc19jaG9jbyI6IE5vbmUsCiAgICAgICAgImNhY2hlLXBhdGgiOiBOb25lLAogICAgICAgICJjYWNoZS1rZXkiOiBOb25lLAogICAgICAgICJjYWNoZS1yZXN0b3JlLWtleXMiOiBOb25lLAogICAgICAgICJhcnRpZmFjdC1uYW1lIjogTm9uZSwKICAgICAgICAiYXJ0aWZhY3QtcGF0aCI6IE5vbmUsCiAgICAgICAgImFydGlmYWN0LWFyY2hpdmUiOiBOb25lLAogICAgICAgICJhcnRpZmFjdC1pbmNsdWRlLWhpZGRlbi1maWxlcyI6IE5vbmUsCiAgICAgICAgImFydGlmYWN0LWlmLW5vLWZpbGVzLWZvdW5kIjogTm9uZSwKICAgICAgICAidGltZW91dC1taW51dGVzIjogTm9uZSwKICAgIH0KICAgIGZvciBzdHJpbmdfcGFyYW0sIGRlZmF1bHQgaW4gZ2xvYmFsX3N0cmluZ19wYXJhbWV0ZXJzLml0ZW1zKCk6CiAgICAgICAgZW52X3ZhbHVlID0gZW52LmdldChzdHJpbmdfcGFyYW0pCiAgICAgICAgaXRlbVtzdHJpbmdfcGFyYW1dID0gZGVmYXVsdCBpZiBlbnZfdmFsdWUgaXMgTm9uZSBlbHNlIGVudl92YWx1ZQoKICAgICMgc2V0IG9zIGFuZCB0b3hlbnYKICAgIGZvciBrLCB2IGluIHJ1bnNfb24uaXRlbXMoKToKICAgICAgICBpZiBrIGluIGVudjoKICAgICAgICAgICAgcGxhdGZvcm0gPSBrCiAgICAgICAgICAgIGl0ZW1bIm9zIl0gPSBlbnYuZ2V0KCJydW5zLW9uIiwgdikKICAgICAgICAgICAgaXRlbVsidG94ZW52Il0gPSBlbnZba10KICAgIGFzc2VydCBpdGVtWyJvcyJdIGlzIG5vdCBOb25lIGFuZCBpdGVtWyJ0b3hlbnYiXSBpcyBub3QgTm9uZQoKICAgICMgc2V0IHB5dGhvbl92ZXJzaW9uCiAgICBweXRob25fdmVyc2lvbiA9IGVudi5nZXQoInB5dGhvbi12ZXJzaW9uIikKICAgIG0gPSByZS5zZWFyY2goIl5weSgyfDMpKFswLTldK3Q/KSIsIGl0ZW1bInRveGVudiJdKQogICAgaWYgcHl0aG9uX3ZlcnNpb24gaXMgbm90IE5vbmU6CiAgICAgICAgaXRlbVsicHl0aG9uX3ZlcnNpb24iXSA9IHB5dGhvbl92ZXJzaW9uCiAgICBlbGlmIG0gaXMgbm90IE5vbmU6CiAgICAgICAgbWFqb3IsIG1pbm9yID0gbS5ncm91cHMoKQogICAgICAgIGl0ZW1bInB5dGhvbl92ZXJzaW9uIl0gPSBmInttYWpvcn0ue21pbm9yfSIKICAgIGVsc2U6CiAgICAgICAgaXRlbVsicHl0aG9uX3ZlcnNpb24iXSA9IGVudi5nZXQoImRlZmF1bHRfcHl0aG9uIikgb3IgZGVmYXVsdF9weXRob24KCiAgICAjIHNldCBuYW1lCiAgICBpdGVtWyJuYW1lIl0gPSBlbnYuZ2V0KCJuYW1lIikgb3IgZiJ7aXRlbVsndG94ZW52J119ICh7aXRlbVsnb3MnXX0pIgoKICAgICMgc2V0IGFydGlmYWN0LW5hbWUgKHJlcGxhY2UgaW52YWxpZCBwYXRoIGNoYXJhY3RlcnMpCiAgICBpdGVtWyJhcnRpZmFjdC1uYW1lIl0gPSByZS5zdWIociJbXFwgLzo8PnwqP1wiJ10iLCAiLSIsIGl0ZW1bIm5hbWUiXSkKICAgIGl0ZW1bImFydGlmYWN0LW5hbWUiXSA9IHJlLnN1YihyIi0rIiwgIi0iLCBpdGVtWyJhcnRpZmFjdC1uYW1lIl0pCgogICAgIyBzZXQgcHl0ZXN0X2ZsYWcKICAgIGl0ZW1bInB5dGVzdF9mbGFnIl0gPSAiIgogICAgc2VwID0gciJcXCIgaWYgcGxhdGZvcm0gPT0gIndpbmRvd3MiIGVsc2UgIi8iCiAgICBpZiBpdGVtWyJweXRlc3QiXSA9PSAidHJ1ZSI6CiAgICAgICAgaWYgaXRlbVsicHl0ZXN0LXJlc3VsdHMtc3VtbWFyeSJdID09ICJ0cnVlIjoKICAgICAgICAgICAgaXRlbVsicHl0ZXN0X2ZsYWciXSArPSByZiItLWp1bml0eG1sICR7e0dJVEhVQl9XT1JLU1BBQ0V9fXtzZXB9cmVzdWx0cy54bWwgIgoKICAgICMgc2V0IGxpYnJhcmllcwogICAgZW52X2xpYnJhcmllcyA9IGVudi5nZXQoImxpYnJhcmllcyIpCiAgICBpZiBpc2luc3RhbmNlKGVudl9saWJyYXJpZXMsIHN0cikgYW5kIGxlbihlbnZfbGlicmFyaWVzLnN0cmlwKCkpID09IDA6CiAgICAgICAgZW52X2xpYnJhcmllcyA9IHt9ICAjIG5vIGxpYnJhcmllcyByZXF1ZXN0ZWQgZm9yIGVudmlyb25tZW50CiAgICBsaWJyYXJpZXMgPSBnbG9iYWxfbGlicmFyaWVzIGlmIGVudl9saWJyYXJpZXMgaXMgTm9uZSBlbHNlIGVudl9saWJyYXJpZXMKICAgIGZvciBtYW5hZ2VyIGluIFsiYnJldyIsICJicmV3X2Nhc2siLCAiYXB0IiwgImNob2NvIl06CiAgICAgICAgaXRlbVtmImxpYnJhcmllc197bWFuYWdlcn0iXSA9ICIgIi5qb2luKGxpYnJhcmllcy5nZXQobWFuYWdlciwgW10pKQoKICAgICMgbWFrZSB0aW1lb3V0LW1pbnV0ZXMgYSBudW1iZXIKICAgIGl0ZW1bInRpbWVvdXQtbWludXRlcyJdID0gaW50KGl0ZW1bInRpbWVvdXQtbWludXRlcyJdKQoKICAgICMgdmVyaWZ5IHZhbHVlcwogICAgYXNzZXJ0IGl0ZW1bInB5dGVzdCJdIGluIHsidHJ1ZSIsICJmYWxzZSJ9CiAgICBhc3NlcnQgaXRlbVsiZGlzcGxheSJdIGluIHsidHJ1ZSIsICJmYWxzZSJ9CgogICAgcmV0dXJuIGl0ZW0KCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgbG9hZF90b3hfdGFyZ2V0cygpCg== + TOX_MATRIX_SCRIPT: IyAvLy8gc2NyaXB0CiMgcmVxdWlyZXMtcHl0aG9uID0gIj09My4xMiIKIyBkZXBlbmRlbmNpZXMgPSBbCiMgICAgICJjbGljaz09OC4yLjEiLAojICAgICAicHl5YW1sPT02LjAuMiIsCiMgXQojIC8vLwppbXBvcnQganNvbgppbXBvcnQgb3MKaW1wb3J0IHJlCgppbXBvcnQgY2xpY2sKaW1wb3J0IHlhbWwKCgpAY2xpY2suY29tbWFuZCgpCkBjbGljay5vcHRpb24oIi0tZW52cyIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tbGlicmFyaWVzIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1wb3NhcmdzIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS10b3hkZXBzIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS10b3hhcmdzIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1weXRlc3QiLCBkZWZhdWx0PSJ0cnVlIikKQGNsaWNrLm9wdGlvbigiLS1weXRlc3QtcmVzdWx0cy1zdW1tYXJ5IiwgZGVmYXVsdD0iZmFsc2UiKQpAY2xpY2sub3B0aW9uKCItLWNvdmVyYWdlIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1jb25kYS1wYWNrYWdlcyIpCkBjbGljay5vcHRpb24oIi0tY29uZGEtY2hhbm5lbHMiLCBkZWZhdWx0PSJjb25kYS1mb3JnZSIpCkBjbGljay5vcHRpb24oIi0tc2V0ZW52IiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1kaXNwbGF5IiwgZGVmYXVsdD0iZmFsc2UiKQpAY2xpY2sub3B0aW9uKCItLWNhY2hlLXBhdGgiLCBkZWZhdWx0PSIiKQpAY2xpY2sub3B0aW9uKCItLWNhY2hlLWtleSIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tY2FjaGUtcmVzdG9yZS1rZXlzIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1hcnRpZmFjdC1wYXRoIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1hcnRpZmFjdC1hcmNoaXZlIiwgZGVmYXVsdD0idHJ1ZSIpCkBjbGljay5vcHRpb24oIi0tYXJ0aWZhY3QtaW5jbHVkZS1oaWRkZW4tZmlsZXMiLCBkZWZhdWx0PSJmYWxzZSIpCkBjbGljay5vcHRpb24oIi0tYXJ0aWZhY3QtaWYtbm8tZmlsZXMtZm91bmQiLCBkZWZhdWx0PSJ3YXJuIikKQGNsaWNrLm9wdGlvbigiLS1ydW5zLW9uIiwgZGVmYXVsdD0iIikKQGNsaWNrLm9wdGlvbigiLS1kZWZhdWx0LXB5dGhvbiIsIGRlZmF1bHQ9IiIpCkBjbGljay5vcHRpb24oIi0tdGltZW91dC1taW51dGVzIiwgZGVmYXVsdD0iMzYwIikKZGVmIGxvYWRfdG94X3RhcmdldHMoCiAgICBlbnZzLAogICAgbGlicmFyaWVzLAogICAgcG9zYXJncywKICAgIHRveGRlcHMsCiAgICB0b3hhcmdzLAogICAgcHl0ZXN0LAogICAgcHl0ZXN0X3Jlc3VsdHNfc3VtbWFyeSwKICAgIGNvdmVyYWdlLAogICAgY29uZGFfcGFja2FnZXMsCiAgICBjb25kYV9jaGFubmVscywKICAgIHNldGVudiwKICAgIGRpc3BsYXksCiAgICBjYWNoZV9wYXRoLAogICAgY2FjaGVfa2V5LAogICAgY2FjaGVfcmVzdG9yZV9rZXlzLAogICAgYXJ0aWZhY3RfcGF0aCwKICAgIGFydGlmYWN0X2FyY2hpdmUsCiAgICBhcnRpZmFjdF9pbmNsdWRlX2hpZGRlbl9maWxlcywKICAgIGFydGlmYWN0X2lmX25vX2ZpbGVzX2ZvdW5kLAogICAgcnVuc19vbiwKICAgIGRlZmF1bHRfcHl0aG9uLAogICAgdGltZW91dF9taW51dGVzLAopOgogICAgIiIiU2NyaXB0IHRvIGxvYWQgdG94IHRhcmdldHMgZm9yIEdpdEh1YiBBY3Rpb25zIHdvcmtmbG93LiIiIgogICAgIyBMb2FkIGVudnMgY29uZmlnCiAgICBlbnZzID0geWFtbC5sb2FkKGVudnMucmVwbGFjZSgiXFxuIiwgIlxuIiksIExvYWRlcj15YW1sLkJhc2VMb2FkZXIpCiAgICBwcmludChqc29uLmR1bXBzKGVudnMsIGluZGVudD0yKSkKCiAgICAjIExvYWQgZ2xvYmFsIGxpYnJhcmllcyBjb25maWcKICAgIGdsb2JhbF9saWJyYXJpZXMgPSB7CiAgICAgICAgImJyZXciOiBbXSwKICAgICAgICAiYnJldy1jYXNrIjogW10sCiAgICAgICAgImFwdCI6IFtdLAogICAgICAgICJjaG9jbyI6IFtdLAogICAgfQogICAgbGlicmFyaWVzID0geWFtbC5sb2FkKGxpYnJhcmllcywgTG9hZGVyPXlhbWwuQmFzZUxvYWRlcikKICAgIGlmIGxpYnJhcmllcyBpcyBub3QgTm9uZToKICAgICAgICBnbG9iYWxfbGlicmFyaWVzLnVwZGF0ZShsaWJyYXJpZXMpCiAgICBwcmludChqc29uLmR1bXBzKGdsb2JhbF9saWJyYXJpZXMsIGluZGVudD0yKSkKCiAgICAjIERlZmF1bHQgaW1hZ2VzIHRvIHVzZSBmb3IgcnVubmVycwogICAgZGVmYXVsdF9ydW5zX29uID0gewogICAgICAgICJsaW51eCI6ICJ1YnVudHUtbGF0ZXN0IiwKICAgICAgICAibWFjb3MiOiAibWFjb3MtbGF0ZXN0IiwKICAgICAgICAid2luZG93cyI6ICJ3aW5kb3dzLWxhdGVzdCIsCiAgICB9CiAgICBjdXN0b21fcnVuc19vbiA9IHlhbWwubG9hZChydW5zX29uLCBMb2FkZXI9eWFtbC5CYXNlTG9hZGVyKQogICAgaWYgaXNpbnN0YW5jZShjdXN0b21fcnVuc19vbiwgZGljdCk6CiAgICAgICAgZGVmYXVsdF9ydW5zX29uLnVwZGF0ZShjdXN0b21fcnVuc19vbikKICAgIHByaW50KGpzb24uZHVtcHMoZGVmYXVsdF9ydW5zX29uLCBpbmRlbnQ9MikpCgogICAgIyBEZWZhdWx0IHN0cmluZyBwYXJhbWV0ZXJzIHdoaWNoIGNhbiBiZSBvdmVyd3JpdHRlbiBieSBlYWNoIGVudgogICAgc3RyaW5nX3BhcmFtZXRlcnMgPSB7CiAgICAgICAgInBvc2FyZ3MiOiBwb3NhcmdzLAogICAgICAgICJ0b3hkZXBzIjogdG94ZGVwcywKICAgICAgICAidG94YXJncyI6IHRveGFyZ3MsCiAgICAgICAgInB5dGVzdCI6IHB5dGVzdCwKICAgICAgICAicHl0ZXN0LXJlc3VsdHMtc3VtbWFyeSI6IHB5dGVzdF9yZXN1bHRzX3N1bW1hcnksCiAgICAgICAgImNvdmVyYWdlIjogY292ZXJhZ2UsCiAgICAgICAgImNvbmRhLXBhY2thZ2VzIjogY29uZGFfcGFja2FnZXMsCiAgICAgICAgImNvbmRhLWNoYW5uZWxzIjoganNvbi5kdW1wcyhjb25kYV9jaGFubmVscy5zcGxpdCgpKSwKICAgICAgICAic2V0ZW52Ijogc2V0ZW52LAogICAgICAgICJkaXNwbGF5IjogZGlzcGxheSwKICAgICAgICAiY2FjaGUtcGF0aCI6IGNhY2hlX3BhdGgsCiAgICAgICAgImNhY2hlLWtleSI6IGNhY2hlX2tleSwKICAgICAgICAiY2FjaGUtcmVzdG9yZS1rZXlzIjogY2FjaGVfcmVzdG9yZV9rZXlzLAogICAgICAgICJhcnRpZmFjdC1wYXRoIjogYXJ0aWZhY3RfcGF0aCwKICAgICAgICAiYXJ0aWZhY3QtYXJjaGl2ZSI6IGFydGlmYWN0X2FyY2hpdmUsCiAgICAgICAgImFydGlmYWN0LWluY2x1ZGUtaGlkZGVuLWZpbGVzIjogYXJ0aWZhY3RfaW5jbHVkZV9oaWRkZW5fZmlsZXMsCiAgICAgICAgImFydGlmYWN0LWlmLW5vLWZpbGVzLWZvdW5kIjogYXJ0aWZhY3RfaWZfbm9fZmlsZXNfZm91bmQsCiAgICAgICAgInRpbWVvdXQtbWludXRlcyI6IHRpbWVvdXRfbWludXRlcywKICAgIH0KCiAgICAjIENyZWF0ZSBtYXRyaXgKICAgIG1hdHJpeCA9IHsiaW5jbHVkZSI6IFtdfQogICAgZm9yIGVudiBpbiBlbnZzOgogICAgICAgIG1hdHJpeFsiaW5jbHVkZSJdLmFwcGVuZCgKICAgICAgICAgICAgZ2V0X21hdHJpeF9pdGVtKAogICAgICAgICAgICAgICAgZW52LAogICAgICAgICAgICAgICAgZ2xvYmFsX2xpYnJhcmllcz1nbG9iYWxfbGlicmFyaWVzLAogICAgICAgICAgICAgICAgZ2xvYmFsX3N0cmluZ19wYXJhbWV0ZXJzPXN0cmluZ19wYXJhbWV0ZXJzLAogICAgICAgICAgICAgICAgcnVuc19vbj1kZWZhdWx0X3J1bnNfb24sCiAgICAgICAgICAgICAgICBkZWZhdWx0X3B5dGhvbj1kZWZhdWx0X3B5dGhvbiwKICAgICAgICAgICAgKQogICAgICAgICkKCiAgICAjIE91dHB1dCBtYXRyaXgKICAgIHByaW50KGpzb24uZHVtcHMobWF0cml4LCBpbmRlbnQ9MikpCiAgICB3aXRoIG9wZW4ob3MuZW52aXJvblsiR0lUSFVCX09VVFBVVCJdLCAiYSIpIGFzIGY6CiAgICAgICAgZi53cml0ZShmIm1hdHJpeD17anNvbi5kdW1wcyhtYXRyaXgpfVxuIikKCgpkZWYgZ2V0X21hdHJpeF9pdGVtKGVudiwgZ2xvYmFsX2xpYnJhcmllcywgZ2xvYmFsX3N0cmluZ19wYXJhbWV0ZXJzLCBydW5zX29uLCBkZWZhdWx0X3B5dGhvbik6CgogICAgIyBkZWZpbmUgc3BlYyBmb3IgZWFjaCBtYXRyaXggaW5jbHVkZSAoKyBnbG9iYWxfc3RyaW5nX3BhcmFtZXRlcnMpCiAgICBpdGVtID0gewogICAgICAgICJvcyI6IE5vbmUsCiAgICAgICAgInRveGVudiI6IE5vbmUsCiAgICAgICAgInB5dGhvbl92ZXJzaW9uIjogTm9uZSwKICAgICAgICAibmFtZSI6IE5vbmUsCiAgICAgICAgInB5dGVzdF9mbGFnIjogTm9uZSwKICAgICAgICAibGlicmFyaWVzX2JyZXciOiBOb25lLAogICAgICAgICJsaWJyYXJpZXNfYnJld19jYXNrIjogTm9uZSwKICAgICAgICAibGlicmFyaWVzX2FwdCI6IE5vbmUsCiAgICAgICAgImxpYnJhcmllc19jaG9jbyI6IE5vbmUsCiAgICAgICAgImNvbmRhLXBhY2thZ2VzIjogTm9uZSwKICAgICAgICAiY2FjaGUtcGF0aCI6IE5vbmUsCiAgICAgICAgImNhY2hlLWtleSI6IE5vbmUsCiAgICAgICAgImNhY2hlLXJlc3RvcmUta2V5cyI6IE5vbmUsCiAgICAgICAgImFydGlmYWN0LW5hbWUiOiBOb25lLAogICAgICAgICJhcnRpZmFjdC1wYXRoIjogTm9uZSwKICAgICAgICAiYXJ0aWZhY3QtYXJjaGl2ZSI6IE5vbmUsCiAgICAgICAgImFydGlmYWN0LWluY2x1ZGUtaGlkZGVuLWZpbGVzIjogTm9uZSwKICAgICAgICAiYXJ0aWZhY3QtaWYtbm8tZmlsZXMtZm91bmQiOiBOb25lLAogICAgICAgICJ0aW1lb3V0LW1pbnV0ZXMiOiBOb25lLAogICAgfQogICAgZm9yIHN0cmluZ19wYXJhbSwgZGVmYXVsdCBpbiBnbG9iYWxfc3RyaW5nX3BhcmFtZXRlcnMuaXRlbXMoKToKICAgICAgICBlbnZfdmFsdWUgPSBlbnYuZ2V0KHN0cmluZ19wYXJhbSkKICAgICAgICBpdGVtW3N0cmluZ19wYXJhbV0gPSBkZWZhdWx0IGlmIGVudl92YWx1ZSBpcyBOb25lIGVsc2UgZW52X3ZhbHVlCgogICAgIyBzZXQgb3MgYW5kIHRveGVudgogICAgZm9yIGssIHYgaW4gcnVuc19vbi5pdGVtcygpOgogICAgICAgIGlmIGsgaW4gZW52OgogICAgICAgICAgICBwbGF0Zm9ybSA9IGsKICAgICAgICAgICAgaXRlbVsib3MiXSA9IGVudi5nZXQoInJ1bnMtb24iLCB2KQogICAgICAgICAgICBpdGVtWyJ0b3hlbnYiXSA9IGVudltrXQogICAgYXNzZXJ0IGl0ZW1bIm9zIl0gaXMgbm90IE5vbmUgYW5kIGl0ZW1bInRveGVudiJdIGlzIG5vdCBOb25lCgogICAgIyBzZXQgcHl0aG9uX3ZlcnNpb24KICAgIHB5dGhvbl92ZXJzaW9uID0gZW52LmdldCgicHl0aG9uLXZlcnNpb24iKQogICAgbSA9IHJlLnNlYXJjaCgiXnB5KDJ8MykoWzAtOV0rdD8pIiwgaXRlbVsidG94ZW52Il0pCiAgICBpZiBweXRob25fdmVyc2lvbiBpcyBub3QgTm9uZToKICAgICAgICBpdGVtWyJweXRob25fdmVyc2lvbiJdID0gcHl0aG9uX3ZlcnNpb24KICAgIGVsaWYgbSBpcyBub3QgTm9uZToKICAgICAgICBtYWpvciwgbWlub3IgPSBtLmdyb3VwcygpCiAgICAgICAgaXRlbVsicHl0aG9uX3ZlcnNpb24iXSA9IGYie21ham9yfS57bWlub3J9IgogICAgZWxzZToKICAgICAgICBpdGVtWyJweXRob25fdmVyc2lvbiJdID0gZW52LmdldCgiZGVmYXVsdF9weXRob24iKSBvciBkZWZhdWx0X3B5dGhvbgoKICAgICMgc2V0IG5hbWUKICAgIGl0ZW1bIm5hbWUiXSA9IGVudi5nZXQoIm5hbWUiKSBvciBmIntpdGVtWyd0b3hlbnYnXX0gKHtpdGVtWydvcyddfSkiCgogICAgIyBzZXQgYXJ0aWZhY3QtbmFtZSAocmVwbGFjZSBpbnZhbGlkIHBhdGggY2hhcmFjdGVycykKICAgIGl0ZW1bImFydGlmYWN0LW5hbWUiXSA9IHJlLnN1YihyIltcXCAvOjw+fCo/XCInXSIsICItIiwgaXRlbVsibmFtZSJdKQogICAgaXRlbVsiYXJ0aWZhY3QtbmFtZSJdID0gcmUuc3ViKHIiLSsiLCAiLSIsIGl0ZW1bImFydGlmYWN0LW5hbWUiXSkKCiAgICAjIHNldCBweXRlc3RfZmxhZwogICAgaXRlbVsicHl0ZXN0X2ZsYWciXSA9ICIiCiAgICBzZXAgPSByIlxcIiBpZiBwbGF0Zm9ybSA9PSAid2luZG93cyIgZWxzZSAiLyIKICAgIGlmIGl0ZW1bInB5dGVzdCJdID09ICJ0cnVlIjoKICAgICAgICBpZiBpdGVtWyJweXRlc3QtcmVzdWx0cy1zdW1tYXJ5Il0gPT0gInRydWUiOgogICAgICAgICAgICBpdGVtWyJweXRlc3RfZmxhZyJdICs9IHJmIi0tanVuaXR4bWwgJHt7R0lUSFVCX1dPUktTUEFDRX19e3NlcH1yZXN1bHRzLnhtbCAiCgogICAgZW52X2NvbmRhX2NoYW5uZWxzID0gZW52LmdldCgiY29uZGEtY2hhbm5lbHMiKQogICAgaWYgaXNpbnN0YW5jZShlbnZfY29uZGFfY2hhbm5lbHMsIHN0cikgYW5kIGxlbihlbnZfY29uZGFfY2hhbm5lbHMuc3RyaXAoKSkgPT0gMDoKICAgICAgICBpdGVtWyJjb25kYS1jaGFubmVscyJdID0ganNvbi5kdW1wcyhlbnZfY29uZGFfY2hhbm5lbHMuc3BsaXQoKSkKCiAgICAjIHNldCBsaWJyYXJpZXMKICAgIGVudl9saWJyYXJpZXMgPSBlbnYuZ2V0KCJsaWJyYXJpZXMiKQogICAgaWYgaXNpbnN0YW5jZShlbnZfbGlicmFyaWVzLCBzdHIpIGFuZCBsZW4oZW52X2xpYnJhcmllcy5zdHJpcCgpKSA9PSAwOgogICAgICAgIGVudl9saWJyYXJpZXMgPSB7fSAgIyBubyBsaWJyYXJpZXMgcmVxdWVzdGVkIGZvciBlbnZpcm9ubWVudAogICAgbGlicmFyaWVzID0gZ2xvYmFsX2xpYnJhcmllcyBpZiBlbnZfbGlicmFyaWVzIGlzIE5vbmUgZWxzZSBlbnZfbGlicmFyaWVzCiAgICBmb3IgbWFuYWdlciBpbiBbImJyZXciLCAiYnJld19jYXNrIiwgImFwdCIsICJjaG9jbyJdOgogICAgICAgIGl0ZW1bZiJsaWJyYXJpZXNfe21hbmFnZXJ9Il0gPSAiICIuam9pbihsaWJyYXJpZXMuZ2V0KG1hbmFnZXIsIFtdKSkKCiAgICAjIG1ha2UgdGltZW91dC1taW51dGVzIGEgbnVtYmVyCiAgICBpdGVtWyJ0aW1lb3V0LW1pbnV0ZXMiXSA9IGludChpdGVtWyJ0aW1lb3V0LW1pbnV0ZXMiXSkKCiAgICAjIHZlcmlmeSB2YWx1ZXMKICAgIGFzc2VydCBpdGVtWyJweXRlc3QiXSBpbiB7InRydWUiLCAiZmFsc2UifQogICAgYXNzZXJ0IGl0ZW1bImRpc3BsYXkiXSBpbiB7InRydWUiLCAiZmFsc2UifQoKICAgIHJldHVybiBpdGVtCgoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIGxvYWRfdG94X3RhcmdldHMoKQo= - run: cat tox_matrix.py - id: set-outputs run: | # zizmor: ignore[template-injection] @@ -187,7 +187,8 @@ jobs: --posargs "${{ inputs.posargs }}" --toxdeps "${{ inputs.toxdeps }}" \ --toxargs "${{ inputs.toxargs }}" --pytest "${{ inputs.pytest }}" \ --pytest-results-summary "${{ inputs.pytest-results-summary }}" \ - --coverage "${{ inputs.coverage }}" --conda-packages "${{ inputs.conda-packages }}" \ + --coverage "${{ inputs.coverage }}" \ + --conda-packages "${{ inputs.conda_packages }}" --conda-channels "${{ inputs.conda_channels }}" \ --setenv "${{ inputs.setenv }}" \ --display "${{ inputs.display }}" --cache-path "${{ inputs.cache-path }}" \ --cache-key "${{ inputs.cache-key }}" --cache-restore-keys "${{ inputs.cache-restore-keys }}" \ @@ -224,7 +225,7 @@ jobs: ref: ${{ inputs.checkout_ref }} persist-credentials: false - - name: Cache ${{ matrix.cache_key }} + - name: Cache ${{ matrix.cache-key }} if: ${{ matrix.cache-path != '' && matrix.cache-key != '' }} uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 with: @@ -241,7 +242,7 @@ jobs: choco: ${{ matrix.libraries_choco }} - name: Setup Python ${{ matrix.python_version }} - if: inputs.conda_packages == '' + if: matrix.conda-packages == '' uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # 8.1.0 with: python-version: ${{ matrix.python_version }} @@ -249,12 +250,12 @@ jobs: ignore-empty-workdir: "true" - name: Setup Micromamba with Python ${{ matrix.python_version }} - if: inputs.conda_packages != '' + if: matrix.conda-packages != '' uses: mamba-org/setup-micromamba@d7c9bd84e824b79d2af72a2d4196c7f4300d3476 # v3.0.0 with: environment-name: test condarc: | - channels: [${{ inputs.conda_channels }}] + channels: ${{ matrix.conda-channels }} use_uv: true create-args: >- python=${{ matrix.python_version }} diff --git a/docs/source/tox.rst b/docs/source/tox.rst index 17f57d4..08a75fd 100644 --- a/docs/source/tox.rst +++ b/docs/source/tox.rst @@ -229,7 +229,7 @@ conda_channels ^^^^^^^^^^^^^^ Conda channel(s) to use with ``conda_packages`` (defaults to ``conda-forge``). -If multiple, make sure they're separated by commas. +If multiple, separate with spaces. setenv ^^^^^^ diff --git a/tools/tox_matrix.py b/tools/tox_matrix.py index 37ab160..f0376aa 100644 --- a/tools/tox_matrix.py +++ b/tools/tox_matrix.py @@ -22,7 +22,8 @@ @click.option("--pytest", default="true") @click.option("--pytest-results-summary", default="false") @click.option("--coverage", default="") -@click.option("--conda-packages", default="auto") +@click.option("--conda-packages") +@click.option("--conda-channels", default="conda-forge") @click.option("--setenv", default="") @click.option("--display", default="false") @click.option("--cache-path", default="") @@ -45,6 +46,7 @@ def load_tox_targets( pytest_results_summary, coverage, conda_packages, + conda_channels, setenv, display, cache_path, @@ -95,6 +97,7 @@ def load_tox_targets( "pytest-results-summary": pytest_results_summary, "coverage": coverage, "conda-packages": conda_packages, + "conda-channels": json.dumps(conda_channels.split()), "setenv": setenv, "display": display, "cache-path": cache_path, @@ -139,6 +142,7 @@ def get_matrix_item(env, global_libraries, global_string_parameters, runs_on, de "libraries_brew_cask": None, "libraries_apt": None, "libraries_choco": None, + "conda-packages": None, "cache-path": None, "cache-key": None, "cache-restore-keys": None, @@ -186,6 +190,10 @@ def get_matrix_item(env, global_libraries, global_string_parameters, runs_on, de if item["pytest-results-summary"] == "true": item["pytest_flag"] += rf"--junitxml ${{GITHUB_WORKSPACE}}{sep}results.xml " + env_conda_channels = env.get("conda-channels") + if isinstance(env_conda_channels, str) and len(env_conda_channels.strip()) == 0: + item["conda-channels"] = json.dumps(env_conda_channels.split()) + # set libraries env_libraries = env.get("libraries") if isinstance(env_libraries, str) and len(env_libraries.strip()) == 0: diff --git a/tox.ini b/tox.ini index fefbe0b..b919b21 100644 --- a/tox.ini +++ b/tox.ini @@ -68,7 +68,7 @@ setenv = tmpdir: COVERAGE_FILE={toxinidir}/.coverage commands = pytest --pyargs test_package {posargs} - + [testenv:build_docs] changedir = docs description = Invoke sphinx-build to build the HTML docs From 774778287b220e40bc68df72223b84e1a2667570 Mon Sep 17 00:00:00 2001 From: zacharyburnett Date: Wed, 3 Jun 2026 15:07:29 -0400 Subject: [PATCH 8/8] unpin uv --- .github/workflows/tox.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tox.yml b/.github/workflows/tox.yml index 43290ca..83b150d 100644 --- a/.github/workflows/tox.yml +++ b/.github/workflows/tox.yml @@ -259,7 +259,7 @@ jobs: use_uv: true create-args: >- python=${{ matrix.python_version }} - uv=0.10.6 + uv ${{ inputs.conda_packages }} init-shell: bash cache-environment: true