summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-04-10 16:12:52 +0000
committerCoprDistGit <infra@openeuler.org>2023-04-10 16:12:52 +0000
commit6ba9a1f1e55385074b0646cd302afabdb6bb3a21 (patch)
tree1819245b9d47913fa85cf113fdd7964d47ff6d74
parent7cfd3e85cac935d992d202cb40892cb7484fa90c (diff)
automatic import of python-tox-gh-actions
-rw-r--r--.gitignore1
-rw-r--r--python-tox-gh-actions.spec1056
-rw-r--r--sources1
3 files changed, 1058 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..62590bb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/tox-gh-actions-3.1.0.tar.gz
diff --git a/python-tox-gh-actions.spec b/python-tox-gh-actions.spec
new file mode 100644
index 0000000..1d5d949
--- /dev/null
+++ b/python-tox-gh-actions.spec
@@ -0,0 +1,1056 @@
+%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 <!-- omit in toc -->
+
+[![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/<workflow>.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/<workflow>.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/<workflow>.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 =
+ <common dependency>
+ linux: <Linux specific deps>
+ macos: <macOS specific deps>
+ windows: <Windows specific deps>
+...
+```
+
+_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 <!-- omit in toc -->
+
+[![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/<workflow>.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/<workflow>.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/<workflow>.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 =
+ <common dependency>
+ linux: <Linux specific deps>
+ macos: <macOS specific deps>
+ windows: <Windows specific deps>
+...
+```
+
+_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 <!-- omit in toc -->
+
+[![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/<workflow>.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/<workflow>.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/<workflow>.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 =
+ <common dependency>
+ linux: <Linux specific deps>
+ macos: <macOS specific deps>
+ windows: <Windows specific deps>
+...
+```
+
+_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
+* Mon Apr 10 2023 Python_Bot <Python_Bot@openeuler.org> - 3.1.0-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..5461b10
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+6c2c5ba460d00661949139fdcd22f065 tox-gh-actions-3.1.0.tar.gz