diff --git a/.github/supported-python-versions.json b/.github/supported-python-versions.json new file mode 100644 index 0000000000..403eeecd14 --- /dev/null +++ b/.github/supported-python-versions.json @@ -0,0 +1,2 @@ +["3.10", "3.11", "3.12", "3.13", "3.14"] + diff --git a/.github/workflows/_run-e2e-single.yaml b/.github/workflows/_run-e2e-single.yaml index 06eca8cc12..97fa6b5705 100644 --- a/.github/workflows/_run-e2e-single.yaml +++ b/.github/workflows/_run-e2e-single.yaml @@ -9,6 +9,10 @@ on: image-name: required: true type: string + python-versions: + required: true + type: string + description: JSON array of Python versions jobs: run-e2e: @@ -19,7 +23,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ${{ fromJson(vars.SDK_SUPPORTED_PYTHON_VERSIONS) }} + python-version: ${{ fromJson(inputs.python-versions) }} steps: - name: Check-out repository @@ -80,4 +84,4 @@ jobs: done echo "Tests failed after 3 attempts" - exit 1 \ No newline at end of file + exit 1 diff --git a/.github/workflows/compatibility.yml b/.github/workflows/compatibility.yml index af001a32ee..eb333b4126 100644 --- a/.github/workflows/compatibility.yml +++ b/.github/workflows/compatibility.yml @@ -8,13 +8,25 @@ on: - "pyproject.toml" jobs: + read-python-versions: + runs-on: ubuntu-latest + outputs: + python-versions: ${{ steps.read-versions.outputs.versions }} + steps: + - uses: actions/checkout@v4 + - id: read-versions + run: | + versions=$(cat .github/supported-python-versions.json) + echo "versions=$versions" >> $GITHUB_OUTPUT + compatibility: + needs: read-python-versions if: github.event.pull_request.draft == false runs-on: ubuntu-latest strategy: matrix: - python-version: ${{ fromJson(vars.SDK_SUPPORTED_PYTHON_VERSIONS) }} + python-version: ${{ fromJson(needs.read-python-versions.outputs.python-versions) }} steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/e2e-subtensor-tests.yaml b/.github/workflows/e2e-subtensor-tests.yaml index dc9d20dba8..4379911082 100644 --- a/.github/workflows/e2e-subtensor-tests.yaml +++ b/.github/workflows/e2e-subtensor-tests.yaml @@ -71,6 +71,18 @@ jobs: echo "Found tests: $test_matrix" echo "test-files=$test_matrix" >> "$GITHUB_OUTPUT" + # Read Python versions + read-python-versions: + runs-on: ubuntu-latest + outputs: + python-versions: ${{ steps.read-versions.outputs.versions }} + steps: + - uses: actions/checkout@v4 + - id: read-versions + run: | + versions=$(cat .github/supported-python-versions.json) + echo "versions=$versions" >> $GITHUB_OUTPUT + # Pull docker image pull-docker-image: runs-on: ubuntu-latest @@ -82,16 +94,16 @@ jobs: run: | echo "Event: $GITHUB_EVENT_NAME" echo "Branch: $GITHUB_REF_NAME" - + echo "Reading labels ..." if [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then labels=$(jq -r '.pull_request.labels[].name' "$GITHUB_EVENT_PATH") else labels="" fi - + image="" - + for label in $labels; do echo "Found label: $label" case "$label" in @@ -147,6 +159,7 @@ jobs: needs: - find-tests - pull-docker-image + - read-python-versions strategy: fail-fast: false max-parallel: 16 @@ -156,4 +169,5 @@ jobs: with: nodeid: ${{ matrix.nodeid }} image-name: ${{ needs.pull-docker-image.outputs.image-name }} + python-versions: ${{ needs.read-python-versions.outputs.python-versions }} secrets: inherit diff --git a/.github/workflows/flake8-and-mypy.yml b/.github/workflows/flake8-and-mypy.yml index 8f30259c04..9638d08ff8 100644 --- a/.github/workflows/flake8-and-mypy.yml +++ b/.github/workflows/flake8-and-mypy.yml @@ -7,7 +7,19 @@ on: types: [opened, synchronize, reopened, edited] jobs: + read-python-versions: + runs-on: ubuntu-latest + outputs: + python-versions: ${{ steps.read-versions.outputs.versions }} + steps: + - uses: actions/checkout@v4 + - id: read-versions + run: | + versions=$(cat .github/supported-python-versions.json) + echo "versions=$versions" >> $GITHUB_OUTPUT + linters: + needs: read-python-versions if: github.event.pull_request.draft == false runs-on: ubuntu-latest @@ -15,7 +27,7 @@ jobs: fail-fast: false max-parallel: 5 matrix: - python-version: ${{ fromJson(vars.SDK_SUPPORTED_PYTHON_VERSIONS) }} + python-version: ${{ fromJson(needs.read-python-versions.outputs.python-versions) }} steps: - name: Checkout repository @@ -47,4 +59,4 @@ jobs: run: uv run flake8 bittensor/ --count - name: Mypy - run: uv run mypy --ignore-missing-imports bittensor/ \ No newline at end of file + run: uv run mypy --ignore-missing-imports bittensor/ diff --git a/.github/workflows/monitor_requirements_size_master.yml b/.github/workflows/monitor_requirements_size_master.yml index 8315c8190a..1cebb907e6 100644 --- a/.github/workflows/monitor_requirements_size_master.yml +++ b/.github/workflows/monitor_requirements_size_master.yml @@ -14,12 +14,24 @@ permissions: contents: read jobs: + read-python-versions: + runs-on: ubuntu-latest + outputs: + python-versions: ${{ steps.read-versions.outputs.versions }} + steps: + - uses: actions/checkout@v4 + - id: read-versions + run: | + versions=$(cat .github/supported-python-versions.json) + echo "versions=$versions" >> $GITHUB_OUTPUT + measure-venv: + needs: read-python-versions if: github.event_name == 'pull_request' && github.base_ref == 'master' || contains( github.event.pull_request.labels.*.name, 'show-venv-size') runs-on: ubuntu-latest strategy: matrix: - python-version: ${{ fromJson(vars.SDK_SUPPORTED_PYTHON_VERSIONS) }} + python-version: ${{ fromJson(needs.read-python-versions.outputs.python-versions) }} outputs: py310: ${{ steps.set-output.outputs.py310 }} py311: ${{ steps.set-output.outputs.py311 }} diff --git a/.github/workflows/unit-and-integration-tests.yml b/.github/workflows/unit-and-integration-tests.yml index 3e2338facd..507a48c098 100644 --- a/.github/workflows/unit-and-integration-tests.yml +++ b/.github/workflows/unit-and-integration-tests.yml @@ -7,7 +7,19 @@ on: types: [opened, synchronize, reopened, edited] jobs: + read-python-versions: + runs-on: ubuntu-latest + outputs: + python-versions: ${{ steps.read-versions.outputs.versions }} + steps: + - uses: actions/checkout@v4 + - id: read-versions + run: | + versions=$(cat .github/supported-python-versions.json) + echo "versions=$versions" >> $GITHUB_OUTPUT + unit-and-integration-tests: + needs: read-python-versions if: github.event.pull_request.draft == false runs-on: ubuntu-latest @@ -15,7 +27,7 @@ jobs: fail-fast: false max-parallel: 5 matrix: - python-version: ${{ fromJson(vars.SDK_SUPPORTED_PYTHON_VERSIONS) }} + python-version: ${{ fromJson(needs.read-python-versions.outputs.python-versions) }} steps: - name: Checkout repository @@ -56,4 +68,4 @@ jobs: env: PYTHONUNBUFFERED: "1" run: | - uv run pytest -n 2 tests/integration_tests/ --reruns 3 \ No newline at end of file + uv run pytest -n 2 tests/integration_tests/ --reruns 3