%global _empty_manifest_terminate_build 0 Name: python-tox-gh-actions Version: 3.1.0 Release: 1 Summary: Seamless integration of tox into GitHub Actions License: MIT URL: https://github.com/ymyzk/tox-gh-actions Source0: https://mirrors.nju.edu.cn/pypi/web/packages/69/1d/caa3b9e15925decd1ea14e579d16007e98d01d6b2db568ffe113221bc2f7/tox-gh-actions-3.1.0.tar.gz BuildArch: noarch Requires: python3-tox Requires: python3-devpi-process Requires: python3-pytest Requires: python3-pytest-cov Requires: python3-pytest-mock Requires: python3-pytest-randomly Requires: python3-black Requires: python3-mypy Requires: python3-flake8 %description # tox-gh-actions [![PyPI version](https://badge.fury.io/py/tox-gh-actions.svg)](https://badge.fury.io/py/tox-gh-actions) [![PyPI Supported Python Versions](https://img.shields.io/pypi/pyversions/tox-gh-actions.svg)](https://pypi.python.org/pypi/tox-gh-actions/) [![GitHub Actions (Tests)](https://github.com/ymyzk/tox-gh-actions/actions/workflows/tests.yml/badge.svg)](https://github.com/ymyzk/tox-gh-actions/actions/workflows/tests.yml) [![codecov](https://codecov.io/gh/ymyzk/tox-gh-actions/branch/master/graph/badge.svg?token=7RWjRk2LkX)](https://codecov.io/gh/ymyzk/tox-gh-actions) **tox-gh-actions** is a tox plugin which helps running tox on GitHub Actions with multiple different Python versions on multiple workers in parallel. This project is inspired by [tox-travis](https://github.com/tox-dev/tox-travis). ## Versions and Compatibility Currently, tox-gh-actions supports both tox 3 and 4, but users need to install the appropriate version by following the table below. | tox | tox-gh-actions | Supported by tox-gh-actions | Branch | |-----|----------------|-----------------------------|-----------------------------------------------------------| | 4.x | 3.x | Yes (stable) | [master](https://github.com/ymyzk/tox-gh-actions) | | 3.x | 2.x | Yes (stable) | [tox3](https://github.com/ymyzk/tox-gh-actions/tree/tox3) | - [Features](#features) - [Usage](#usage) - [Examples](#examples) - [Basic Example](#basic-example) - [tox-gh-actions Configuration](#tox-gh-actions-configuration) - [Workflow Configuration](#workflow-configuration) - [Advanced Examples](#advanced-examples) - [Factor-Conditional Settings: Python Version](#factor-conditional-settings-python-version) - [Factor-Conditional Settings: Environment Variable](#factor-conditional-settings-environment-variable) - [Overriding Environments to Run](#overriding-environments-to-run) - [Versioning](#versioning) - [Understanding Behavior of tox-gh-actions](#understanding-behavior-of-tox-gh-actions) - [How tox-gh-actions Works](#how-tox-gh-actions-works) - [Logging](#logging) ## Features When running tox on GitHub Actions, tox-gh-actions * detects which environment to run based on configurations and * provides utilities such as [grouping log lines](https://github.com/actions/toolkit/blob/main/docs/commands.md#group-and-ungroup-log-lines). ## Usage 1. Add configurations under `[gh-actions]` section along with tox's configuration. - It will be `pyproject.toml`, `tox.ini`, or `setup.cfg`. See [tox's documentation](https://tox.wiki/en/latest/config.html) for more details. 2. Install `tox-gh-actions` package in the GitHub Actions workflow before running `tox` command. ## Examples ### Basic Example The following configuration will create 4 jobs when running the workflow on GitHub Actions. - On Python 3.7 job, tox runs `py37` environment - On Python 3.8 job, tox runs `py38` environment - On Python 3.9 job, tox runs `py39` environment - On Python 3.10 job, tox runs `py310` and `mypy` environments #### tox-gh-actions Configuration Add `[gh-actions]` section to the same file as tox's configuration. If you're using `tox.ini`: ```ini [tox] envlist = py37, py38, py39, py310, mypy [gh-actions] python = 3.7: py37 3.8: py38 3.9: py39 3.10: py310, mypy [testenv] ... ``` If you're using `setup.cfg`: ```ini [tox:tox] envlist = py37, py38, py39, py310, mypy [gh-actions] python = 3.7: py37 3.8: py38 3.9: py39 3.10: py310, mypy [testenv] ... ``` If you're using `pyproject.toml`: ```toml [tool.tox] legacy_tox_ini = """ [tox] envlist = py37, py38, py39, py310, mypy [gh-actions] python = 3.7: py37 3.8: py38 3.9: py39 3.10: py310, mypy [testenv] """ ``` #### Workflow Configuration `.github/workflows/.yml`: ```yaml name: Python package on: - push - pull_request jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: ['3.7', '3.8', '3.9', '3.10'] steps: - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install tox tox-gh-actions - name: Test with tox run: tox ``` ### Advanced Examples #### Factor-Conditional Settings: Python Version The following configuration will create 2 jobs when running the workflow on GitHub Actions. - On Python 3.7 job, tox runs `py37-django22` and `py37-django32` environments - On Python 3.8 job, tox runs `py38-django32` environment `tox.ini`: ```ini [tox] envlist = py37-django{22,32}, py38-django32 [gh-actions] python = 3.7: py37 3.8: py38 [testenv] ... ``` When using pre-release versions of Python, please do not specify `-beta` or `-dev` in `tox.ini`. `.github/workflows/.yml`: ```yaml ... jobs: build: strategy: matrix: python-version: [3.9, 3.10.0-beta.3] ... ``` `tox.ini`: ```ini [tox] envlist = py39, py310 [gh-actions] python = 3.9: py39 3.10: py310 # The following won't work # 3.10-beta.3: py310 # 3.10-dev: py310 [testenv] ... ``` PyPy is also supported in the `python` configuration key. Support of Pyston is experimental and not tested by our CI. `tox.ini`: ```ini [tox] envlist = py37, py38, pypy3, pyston38 [gh-actions] python = 3.7: py37 3.8: py38, mypy pypy-3.7: pypy3 pyston-3.8: pyston38 [testenv] ... [testenv:pyston38] basepython = pyston38 ``` You can also specify without minor versions in the `python` configuration key. `tox.ini`: ```ini [tox] envlist = py3, pypy3 [gh-actions] python = 3: py3, mypy pypy-3: pypy3 [testenv] ... ``` If there are multiple matching Python versions in the configuration, only the most precise one is used. For example, if you are running CPython 3.8 and `gh-actions.python` has both `3` and `3.8`, tox-gh-actions gets factors only from the key `3.8`. _Changed in 3.0_: `pypy3` is not supported in the configuration anymore. Please use `pypy-3` instead. #### Factor-Conditional Settings: Environment Variable You can also use environment variable to decide which environment to run. The following is an example to install different dependency based on platform. It will create 9 jobs when running the workflow on GitHub Actions. - On Python 3.8/ubuntu-latest job, tox runs `py38-linux` environment - On Python 3.9/ubuntu-latest job, tox runs `py39-linux` environment - and so on. `.github/workflows/.yml`: ```yaml name: Python package on: - push - pull_request jobs: build: runs-on: ${{ matrix.platform }} strategy: matrix: platform: [ubuntu-latest, macos-latest, windows-latest] python-version: ['3.8', '3.9', '3.10'] steps: - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install tox tox-gh-actions - name: Test with tox run: tox env: PLATFORM: ${{ matrix.platform }} ``` `tox.ini`: ```ini [tox] envlist = py{38,39,310}-{linux,macos,windows} [gh-actions] python = 3.8: py38 3.9: py39 3.10: py310 [gh-actions:env] PLATFORM = ubuntu-latest: linux macos-latest: macos windows-latest: windows [testenv] deps = linux: macos: windows: ... ``` _Changed in 3.0_: Environment variables should not use lowercase letters. Because of the limitation in tox's configuration loading API, tox-gh-actions always convert keys in `[gh-actions:env]` to uppercase. ### Overriding Environments to Run _Changed in 2.0_: When a list of environments to run is specified explicitly via `-e` option or `TOXENV` environment variable ([tox's help](https://tox.wiki/en/latest/cli_interface.html#tox-run--e)), tox-gh-actions respects the given environments and simply runs the given environments without enforcing its configuration. Before 2.0, tox-gh-actions was always enforcing its configuration even when a list of environments is given explicitly. ## Versioning This project follows [PEP 440](https://www.python.org/dev/peps/pep-0440/) and uses a format of major.minor.patch (X.Y.Z). The major version (X) will be incremented when we make backward incompatible changes to a public API. The public API of this project is the configuration of tox-gh-actions. The major version can be also incremented when we require a new version of tox. This project tries not to introduce backward incompatibles changes as much as possible so that users don't need to update their project's configuration too frequently. tox-gh-actions 3.x may drop support of unsupported Python 3.y versions in the future without bumping its major version. ## Understanding Behavior of tox-gh-actions ### How tox-gh-actions Works See [ARCHITECTURE.md](./ARCHITECTURE.md) for more details. ### Logging tox-gh-actions writes log messages using the standard `logging` module. This is handy for understanding behavior of tox-gh-actions and for debugging tox-gh-actions. To see the log messages, please run `tox -vv`. %package -n python3-tox-gh-actions Summary: Seamless integration of tox into GitHub Actions Provides: python-tox-gh-actions BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-tox-gh-actions # tox-gh-actions [![PyPI version](https://badge.fury.io/py/tox-gh-actions.svg)](https://badge.fury.io/py/tox-gh-actions) [![PyPI Supported Python Versions](https://img.shields.io/pypi/pyversions/tox-gh-actions.svg)](https://pypi.python.org/pypi/tox-gh-actions/) [![GitHub Actions (Tests)](https://github.com/ymyzk/tox-gh-actions/actions/workflows/tests.yml/badge.svg)](https://github.com/ymyzk/tox-gh-actions/actions/workflows/tests.yml) [![codecov](https://codecov.io/gh/ymyzk/tox-gh-actions/branch/master/graph/badge.svg?token=7RWjRk2LkX)](https://codecov.io/gh/ymyzk/tox-gh-actions) **tox-gh-actions** is a tox plugin which helps running tox on GitHub Actions with multiple different Python versions on multiple workers in parallel. This project is inspired by [tox-travis](https://github.com/tox-dev/tox-travis). ## Versions and Compatibility Currently, tox-gh-actions supports both tox 3 and 4, but users need to install the appropriate version by following the table below. | tox | tox-gh-actions | Supported by tox-gh-actions | Branch | |-----|----------------|-----------------------------|-----------------------------------------------------------| | 4.x | 3.x | Yes (stable) | [master](https://github.com/ymyzk/tox-gh-actions) | | 3.x | 2.x | Yes (stable) | [tox3](https://github.com/ymyzk/tox-gh-actions/tree/tox3) | - [Features](#features) - [Usage](#usage) - [Examples](#examples) - [Basic Example](#basic-example) - [tox-gh-actions Configuration](#tox-gh-actions-configuration) - [Workflow Configuration](#workflow-configuration) - [Advanced Examples](#advanced-examples) - [Factor-Conditional Settings: Python Version](#factor-conditional-settings-python-version) - [Factor-Conditional Settings: Environment Variable](#factor-conditional-settings-environment-variable) - [Overriding Environments to Run](#overriding-environments-to-run) - [Versioning](#versioning) - [Understanding Behavior of tox-gh-actions](#understanding-behavior-of-tox-gh-actions) - [How tox-gh-actions Works](#how-tox-gh-actions-works) - [Logging](#logging) ## Features When running tox on GitHub Actions, tox-gh-actions * detects which environment to run based on configurations and * provides utilities such as [grouping log lines](https://github.com/actions/toolkit/blob/main/docs/commands.md#group-and-ungroup-log-lines). ## Usage 1. Add configurations under `[gh-actions]` section along with tox's configuration. - It will be `pyproject.toml`, `tox.ini`, or `setup.cfg`. See [tox's documentation](https://tox.wiki/en/latest/config.html) for more details. 2. Install `tox-gh-actions` package in the GitHub Actions workflow before running `tox` command. ## Examples ### Basic Example The following configuration will create 4 jobs when running the workflow on GitHub Actions. - On Python 3.7 job, tox runs `py37` environment - On Python 3.8 job, tox runs `py38` environment - On Python 3.9 job, tox runs `py39` environment - On Python 3.10 job, tox runs `py310` and `mypy` environments #### tox-gh-actions Configuration Add `[gh-actions]` section to the same file as tox's configuration. If you're using `tox.ini`: ```ini [tox] envlist = py37, py38, py39, py310, mypy [gh-actions] python = 3.7: py37 3.8: py38 3.9: py39 3.10: py310, mypy [testenv] ... ``` If you're using `setup.cfg`: ```ini [tox:tox] envlist = py37, py38, py39, py310, mypy [gh-actions] python = 3.7: py37 3.8: py38 3.9: py39 3.10: py310, mypy [testenv] ... ``` If you're using `pyproject.toml`: ```toml [tool.tox] legacy_tox_ini = """ [tox] envlist = py37, py38, py39, py310, mypy [gh-actions] python = 3.7: py37 3.8: py38 3.9: py39 3.10: py310, mypy [testenv] """ ``` #### Workflow Configuration `.github/workflows/.yml`: ```yaml name: Python package on: - push - pull_request jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: ['3.7', '3.8', '3.9', '3.10'] steps: - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install tox tox-gh-actions - name: Test with tox run: tox ``` ### Advanced Examples #### Factor-Conditional Settings: Python Version The following configuration will create 2 jobs when running the workflow on GitHub Actions. - On Python 3.7 job, tox runs `py37-django22` and `py37-django32` environments - On Python 3.8 job, tox runs `py38-django32` environment `tox.ini`: ```ini [tox] envlist = py37-django{22,32}, py38-django32 [gh-actions] python = 3.7: py37 3.8: py38 [testenv] ... ``` When using pre-release versions of Python, please do not specify `-beta` or `-dev` in `tox.ini`. `.github/workflows/.yml`: ```yaml ... jobs: build: strategy: matrix: python-version: [3.9, 3.10.0-beta.3] ... ``` `tox.ini`: ```ini [tox] envlist = py39, py310 [gh-actions] python = 3.9: py39 3.10: py310 # The following won't work # 3.10-beta.3: py310 # 3.10-dev: py310 [testenv] ... ``` PyPy is also supported in the `python` configuration key. Support of Pyston is experimental and not tested by our CI. `tox.ini`: ```ini [tox] envlist = py37, py38, pypy3, pyston38 [gh-actions] python = 3.7: py37 3.8: py38, mypy pypy-3.7: pypy3 pyston-3.8: pyston38 [testenv] ... [testenv:pyston38] basepython = pyston38 ``` You can also specify without minor versions in the `python` configuration key. `tox.ini`: ```ini [tox] envlist = py3, pypy3 [gh-actions] python = 3: py3, mypy pypy-3: pypy3 [testenv] ... ``` If there are multiple matching Python versions in the configuration, only the most precise one is used. For example, if you are running CPython 3.8 and `gh-actions.python` has both `3` and `3.8`, tox-gh-actions gets factors only from the key `3.8`. _Changed in 3.0_: `pypy3` is not supported in the configuration anymore. Please use `pypy-3` instead. #### Factor-Conditional Settings: Environment Variable You can also use environment variable to decide which environment to run. The following is an example to install different dependency based on platform. It will create 9 jobs when running the workflow on GitHub Actions. - On Python 3.8/ubuntu-latest job, tox runs `py38-linux` environment - On Python 3.9/ubuntu-latest job, tox runs `py39-linux` environment - and so on. `.github/workflows/.yml`: ```yaml name: Python package on: - push - pull_request jobs: build: runs-on: ${{ matrix.platform }} strategy: matrix: platform: [ubuntu-latest, macos-latest, windows-latest] python-version: ['3.8', '3.9', '3.10'] steps: - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install tox tox-gh-actions - name: Test with tox run: tox env: PLATFORM: ${{ matrix.platform }} ``` `tox.ini`: ```ini [tox] envlist = py{38,39,310}-{linux,macos,windows} [gh-actions] python = 3.8: py38 3.9: py39 3.10: py310 [gh-actions:env] PLATFORM = ubuntu-latest: linux macos-latest: macos windows-latest: windows [testenv] deps = linux: macos: windows: ... ``` _Changed in 3.0_: Environment variables should not use lowercase letters. Because of the limitation in tox's configuration loading API, tox-gh-actions always convert keys in `[gh-actions:env]` to uppercase. ### Overriding Environments to Run _Changed in 2.0_: When a list of environments to run is specified explicitly via `-e` option or `TOXENV` environment variable ([tox's help](https://tox.wiki/en/latest/cli_interface.html#tox-run--e)), tox-gh-actions respects the given environments and simply runs the given environments without enforcing its configuration. Before 2.0, tox-gh-actions was always enforcing its configuration even when a list of environments is given explicitly. ## Versioning This project follows [PEP 440](https://www.python.org/dev/peps/pep-0440/) and uses a format of major.minor.patch (X.Y.Z). The major version (X) will be incremented when we make backward incompatible changes to a public API. The public API of this project is the configuration of tox-gh-actions. The major version can be also incremented when we require a new version of tox. This project tries not to introduce backward incompatibles changes as much as possible so that users don't need to update their project's configuration too frequently. tox-gh-actions 3.x may drop support of unsupported Python 3.y versions in the future without bumping its major version. ## Understanding Behavior of tox-gh-actions ### How tox-gh-actions Works See [ARCHITECTURE.md](./ARCHITECTURE.md) for more details. ### Logging tox-gh-actions writes log messages using the standard `logging` module. This is handy for understanding behavior of tox-gh-actions and for debugging tox-gh-actions. To see the log messages, please run `tox -vv`. %package help Summary: Development documents and examples for tox-gh-actions Provides: python3-tox-gh-actions-doc %description help # tox-gh-actions [![PyPI version](https://badge.fury.io/py/tox-gh-actions.svg)](https://badge.fury.io/py/tox-gh-actions) [![PyPI Supported Python Versions](https://img.shields.io/pypi/pyversions/tox-gh-actions.svg)](https://pypi.python.org/pypi/tox-gh-actions/) [![GitHub Actions (Tests)](https://github.com/ymyzk/tox-gh-actions/actions/workflows/tests.yml/badge.svg)](https://github.com/ymyzk/tox-gh-actions/actions/workflows/tests.yml) [![codecov](https://codecov.io/gh/ymyzk/tox-gh-actions/branch/master/graph/badge.svg?token=7RWjRk2LkX)](https://codecov.io/gh/ymyzk/tox-gh-actions) **tox-gh-actions** is a tox plugin which helps running tox on GitHub Actions with multiple different Python versions on multiple workers in parallel. This project is inspired by [tox-travis](https://github.com/tox-dev/tox-travis). ## Versions and Compatibility Currently, tox-gh-actions supports both tox 3 and 4, but users need to install the appropriate version by following the table below. | tox | tox-gh-actions | Supported by tox-gh-actions | Branch | |-----|----------------|-----------------------------|-----------------------------------------------------------| | 4.x | 3.x | Yes (stable) | [master](https://github.com/ymyzk/tox-gh-actions) | | 3.x | 2.x | Yes (stable) | [tox3](https://github.com/ymyzk/tox-gh-actions/tree/tox3) | - [Features](#features) - [Usage](#usage) - [Examples](#examples) - [Basic Example](#basic-example) - [tox-gh-actions Configuration](#tox-gh-actions-configuration) - [Workflow Configuration](#workflow-configuration) - [Advanced Examples](#advanced-examples) - [Factor-Conditional Settings: Python Version](#factor-conditional-settings-python-version) - [Factor-Conditional Settings: Environment Variable](#factor-conditional-settings-environment-variable) - [Overriding Environments to Run](#overriding-environments-to-run) - [Versioning](#versioning) - [Understanding Behavior of tox-gh-actions](#understanding-behavior-of-tox-gh-actions) - [How tox-gh-actions Works](#how-tox-gh-actions-works) - [Logging](#logging) ## Features When running tox on GitHub Actions, tox-gh-actions * detects which environment to run based on configurations and * provides utilities such as [grouping log lines](https://github.com/actions/toolkit/blob/main/docs/commands.md#group-and-ungroup-log-lines). ## Usage 1. Add configurations under `[gh-actions]` section along with tox's configuration. - It will be `pyproject.toml`, `tox.ini`, or `setup.cfg`. See [tox's documentation](https://tox.wiki/en/latest/config.html) for more details. 2. Install `tox-gh-actions` package in the GitHub Actions workflow before running `tox` command. ## Examples ### Basic Example The following configuration will create 4 jobs when running the workflow on GitHub Actions. - On Python 3.7 job, tox runs `py37` environment - On Python 3.8 job, tox runs `py38` environment - On Python 3.9 job, tox runs `py39` environment - On Python 3.10 job, tox runs `py310` and `mypy` environments #### tox-gh-actions Configuration Add `[gh-actions]` section to the same file as tox's configuration. If you're using `tox.ini`: ```ini [tox] envlist = py37, py38, py39, py310, mypy [gh-actions] python = 3.7: py37 3.8: py38 3.9: py39 3.10: py310, mypy [testenv] ... ``` If you're using `setup.cfg`: ```ini [tox:tox] envlist = py37, py38, py39, py310, mypy [gh-actions] python = 3.7: py37 3.8: py38 3.9: py39 3.10: py310, mypy [testenv] ... ``` If you're using `pyproject.toml`: ```toml [tool.tox] legacy_tox_ini = """ [tox] envlist = py37, py38, py39, py310, mypy [gh-actions] python = 3.7: py37 3.8: py38 3.9: py39 3.10: py310, mypy [testenv] """ ``` #### Workflow Configuration `.github/workflows/.yml`: ```yaml name: Python package on: - push - pull_request jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: ['3.7', '3.8', '3.9', '3.10'] steps: - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install tox tox-gh-actions - name: Test with tox run: tox ``` ### Advanced Examples #### Factor-Conditional Settings: Python Version The following configuration will create 2 jobs when running the workflow on GitHub Actions. - On Python 3.7 job, tox runs `py37-django22` and `py37-django32` environments - On Python 3.8 job, tox runs `py38-django32` environment `tox.ini`: ```ini [tox] envlist = py37-django{22,32}, py38-django32 [gh-actions] python = 3.7: py37 3.8: py38 [testenv] ... ``` When using pre-release versions of Python, please do not specify `-beta` or `-dev` in `tox.ini`. `.github/workflows/.yml`: ```yaml ... jobs: build: strategy: matrix: python-version: [3.9, 3.10.0-beta.3] ... ``` `tox.ini`: ```ini [tox] envlist = py39, py310 [gh-actions] python = 3.9: py39 3.10: py310 # The following won't work # 3.10-beta.3: py310 # 3.10-dev: py310 [testenv] ... ``` PyPy is also supported in the `python` configuration key. Support of Pyston is experimental and not tested by our CI. `tox.ini`: ```ini [tox] envlist = py37, py38, pypy3, pyston38 [gh-actions] python = 3.7: py37 3.8: py38, mypy pypy-3.7: pypy3 pyston-3.8: pyston38 [testenv] ... [testenv:pyston38] basepython = pyston38 ``` You can also specify without minor versions in the `python` configuration key. `tox.ini`: ```ini [tox] envlist = py3, pypy3 [gh-actions] python = 3: py3, mypy pypy-3: pypy3 [testenv] ... ``` If there are multiple matching Python versions in the configuration, only the most precise one is used. For example, if you are running CPython 3.8 and `gh-actions.python` has both `3` and `3.8`, tox-gh-actions gets factors only from the key `3.8`. _Changed in 3.0_: `pypy3` is not supported in the configuration anymore. Please use `pypy-3` instead. #### Factor-Conditional Settings: Environment Variable You can also use environment variable to decide which environment to run. The following is an example to install different dependency based on platform. It will create 9 jobs when running the workflow on GitHub Actions. - On Python 3.8/ubuntu-latest job, tox runs `py38-linux` environment - On Python 3.9/ubuntu-latest job, tox runs `py39-linux` environment - and so on. `.github/workflows/.yml`: ```yaml name: Python package on: - push - pull_request jobs: build: runs-on: ${{ matrix.platform }} strategy: matrix: platform: [ubuntu-latest, macos-latest, windows-latest] python-version: ['3.8', '3.9', '3.10'] steps: - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install tox tox-gh-actions - name: Test with tox run: tox env: PLATFORM: ${{ matrix.platform }} ``` `tox.ini`: ```ini [tox] envlist = py{38,39,310}-{linux,macos,windows} [gh-actions] python = 3.8: py38 3.9: py39 3.10: py310 [gh-actions:env] PLATFORM = ubuntu-latest: linux macos-latest: macos windows-latest: windows [testenv] deps = linux: macos: windows: ... ``` _Changed in 3.0_: Environment variables should not use lowercase letters. Because of the limitation in tox's configuration loading API, tox-gh-actions always convert keys in `[gh-actions:env]` to uppercase. ### Overriding Environments to Run _Changed in 2.0_: When a list of environments to run is specified explicitly via `-e` option or `TOXENV` environment variable ([tox's help](https://tox.wiki/en/latest/cli_interface.html#tox-run--e)), tox-gh-actions respects the given environments and simply runs the given environments without enforcing its configuration. Before 2.0, tox-gh-actions was always enforcing its configuration even when a list of environments is given explicitly. ## Versioning This project follows [PEP 440](https://www.python.org/dev/peps/pep-0440/) and uses a format of major.minor.patch (X.Y.Z). The major version (X) will be incremented when we make backward incompatible changes to a public API. The public API of this project is the configuration of tox-gh-actions. The major version can be also incremented when we require a new version of tox. This project tries not to introduce backward incompatibles changes as much as possible so that users don't need to update their project's configuration too frequently. tox-gh-actions 3.x may drop support of unsupported Python 3.y versions in the future without bumping its major version. ## Understanding Behavior of tox-gh-actions ### How tox-gh-actions Works See [ARCHITECTURE.md](./ARCHITECTURE.md) for more details. ### Logging tox-gh-actions writes log messages using the standard `logging` module. This is handy for understanding behavior of tox-gh-actions and for debugging tox-gh-actions. To see the log messages, please run `tox -vv`. %prep %autosetup -n tox-gh-actions-3.1.0 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-tox-gh-actions -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Fri Apr 21 2023 Python_Bot - 3.1.0-1 - Package Spec generated