From 9f93d2c4b947f086f0be029a06cc4c7abf172cd7 Mon Sep 17 00:00:00 2001 From: Pedro Peixoto Date: Sun, 28 Feb 2021 17:41:29 -0300 Subject: [PATCH 01/14] Support custom celeryconfig modules --- README.rst | 4 ++++ pyramid_celery/__init__.py | 2 +- setup.py | 1 - tests/configs/custom_useceleryconfig.ini | 3 +++ tests/custom_celeryconfig/__init__.py | 0 tests/custom_celeryconfig/config.py | 1 + tests/test_celery.py | 16 ++++++++++++++++ 7 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 tests/configs/custom_useceleryconfig.ini create mode 100644 tests/custom_celeryconfig/__init__.py create mode 100644 tests/custom_celeryconfig/config.py diff --git a/README.rst b/README.rst index a48b5b8..e2232c5 100644 --- a/README.rst +++ b/README.rst @@ -64,6 +64,10 @@ If you want to use the standard **celeryconfig** python file you can set the [celery] use_celeryconfig = True + celery_config_module = my.custom.celeryconfig + +You may also suppress the **celery_config_module** directive to use the default +`"celeryconfig"` You can get more information for celeryconfig.py here: diff --git a/pyramid_celery/__init__.py b/pyramid_celery/__init__.py index bdc6ee3..583cca9 100644 --- a/pyramid_celery/__init__.py +++ b/pyramid_celery/__init__.py @@ -70,7 +70,7 @@ def setup_app(app, root, request, registry, closer, ini_location): ) if asbool(celery_config.get('use_celeryconfig', False)) is True: - config_path = 'celeryconfig' + config_path = celery_config.get('celery_config_module', 'celeryconfig') celery_app.config_from_object(config_path) else: hijack_key = 'worker_hijack_root_logger' diff --git a/setup.py b/setup.py index 38dc01a..e519d2c 100644 --- a/setup.py +++ b/setup.py @@ -1,5 +1,4 @@ import os -import sys from setuptools import setup, find_packages here = os.path.abspath(os.path.dirname(__file__)) diff --git a/tests/configs/custom_useceleryconfig.ini b/tests/configs/custom_useceleryconfig.ini new file mode 100644 index 0000000..3b50d30 --- /dev/null +++ b/tests/configs/custom_useceleryconfig.ini @@ -0,0 +1,3 @@ +[celery] +use_celeryconfig = true +celery_config_module = custom_celeryconfig.config diff --git a/tests/custom_celeryconfig/__init__.py b/tests/custom_celeryconfig/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/custom_celeryconfig/config.py b/tests/custom_celeryconfig/config.py new file mode 100644 index 0000000..942f10e --- /dev/null +++ b/tests/custom_celeryconfig/config.py @@ -0,0 +1 @@ +BROKER_URL = "redis://localhost:1337/1" diff --git a/tests/test_celery.py b/tests/test_celery.py index 954da2e..3938601 100644 --- a/tests/test_celery.py +++ b/tests/test_celery.py @@ -52,6 +52,22 @@ def test_includeme_use_celeryconfig(): assert celery_app.conf['broker_url'] == 'redis://localhost:1337/0' +@pytest.mark.unit +def test_includeme_use_custom_celeryconfig(): + from pyramid_celery import includeme + from pyramid_celery import celery_app + from pyramid import testing + from pyramid.registry import Registry + config = testing.setUp() + config.registry = Registry() + config.registry.settings = {} + + includeme(config) + config.configure_celery('tests/configs/custom_useceleryconfig.ini') + + assert celery_app.conf['broker_url'] == 'redis://localhost:1337/1' + + @pytest.mark.unit def test_preload_no_ini(): from pyramid_celery import on_preload_parsed From d062aee5b266ab73ac5d1444c9db507992c33316 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Rogowski?= Date: Wed, 28 Apr 2021 09:05:49 +0200 Subject: [PATCH 02/14] fix deprecation warnings in python3.8 and above --- pyramid_celery/loaders.py | 2 +- setup.cfg | 2 +- setup.py | 66 +++++++++++++++++++-------------------- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/pyramid_celery/loaders.py b/pyramid_celery/loaders.py index 199a8d6..ffe81a5 100644 --- a/pyramid_celery/loaders.py +++ b/pyramid_celery/loaders.py @@ -92,7 +92,7 @@ def get_route_config(parser, section): class INILoader(celery.loaders.base.BaseLoader): - ConfigParser = configparser.SafeConfigParser + ConfigParser = configparser.ConfigParser def __init__(self, app, **kwargs): self.celery_conf = kwargs.pop('ini_file') diff --git a/setup.cfg b/setup.cfg index 1ddb900..39f541f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -9,7 +9,7 @@ norecursedirs = addopts = -rxEfs - --strict + --strict-markers --doctest-modules --doctest-glob=\*.rst --tb=short diff --git a/setup.py b/setup.py index 38dc01a..e05c87c 100644 --- a/setup.py +++ b/setup.py @@ -1,5 +1,4 @@ import os -import sys from setuptools import setup, find_packages here = os.path.abspath(os.path.dirname(__file__)) @@ -8,36 +7,37 @@ requires = ['pyramid', 'celery'] -setup(name='pyramid_celery', - version='4.0.0', - description='Celery integration with pyramid', - long_description=README + "\n" + CHANGES, - classifiers=[ - "Development Status :: 5 - Production/Stable", - "Intended Audience :: Developers", - "License :: OSI Approved :: MIT License", - "Operating System :: Unix", - "Operating System :: POSIX", - "Operating System :: Microsoft :: Windows", - "Programming Language :: Python", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: Implementation :: CPython", - "Programming Language :: Python :: Implementation :: PyPy", - ], - author='John Anderson', - author_email='sontek@gmail.com', - url='https://github.com/sontek/pyramid_celery', - keywords='paste pyramid celery message queue amqp job task distributed', - license='MIT', - packages=find_packages(), - include_package_data=True, - zip_safe=False, - install_requires=requires, - tests_require=requires + ['pytest'], - python_requires='>=3.6', - test_suite="pyramid_celery", +setup( + name='pyramid_celery', + version='4.0.0', + description='Celery integration with pyramid', + long_description=README + "\n" + CHANGES, + classifiers=[ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Operating System :: Unix", + "Operating System :: POSIX", + "Operating System :: Microsoft :: Windows", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", + ], + author='John Anderson', + author_email='sontek@gmail.com', + url='https://github.com/sontek/pyramid_celery', + keywords='paste pyramid celery message queue amqp job task distributed', + license='MIT', + packages=find_packages(), + include_package_data=True, + zip_safe=False, + install_requires=requires, + tests_require=requires + ['pytest'], + python_requires='>=3.6', + test_suite="pyramid_celery", ) From 6d04f8f21a7a79256b63612fc58c0b0ef2260cb6 Mon Sep 17 00:00:00 2001 From: Francis Charette Migneault Date: Mon, 20 Nov 2023 19:50:54 -0500 Subject: [PATCH 03/14] 5.0.0a release --- .gitignore | 4 ++++ CHANGES.txt | 5 +++++ setup.py | 6 +++++- tox.ini | 2 +- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 852263c..28e8d5d 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,7 @@ docs/_build coverage.xml junit.xml *celerybeat-schedule* + +# IDE +.idea +.vscode diff --git a/CHANGES.txt b/CHANGES.txt index 3e49b93..a2259a9 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,8 @@ +5.0.0a +================ +- Add support of Python 3.12 +- Add support `celery_config_module` option for alternate location of `celeryconfig.py` + 4.0.0 ================ - Drop support for celery 3.0 diff --git a/setup.py b/setup.py index e05c87c..64f8ec6 100644 --- a/setup.py +++ b/setup.py @@ -9,7 +9,7 @@ setup( name='pyramid_celery', - version='4.0.0', + version='5.0.0a', description='Celery integration with pyramid', long_description=README + "\n" + CHANGES, classifiers=[ @@ -21,10 +21,14 @@ "Operating System :: Microsoft :: Windows", "Programming Language :: Python", "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", ], diff --git a/tox.ini b/tox.ini index 22ae5ae..d317395 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,6 @@ [tox] skipsdist = True -envlist = py36, py37, py38, py39, pypy3, flake8, celery4, celery5 +envlist = py36, py37, py38, py39, py310, py311, py312, pypy3, flake8, celery4, celery5 [base] commands = From 0c9393e608383be9454bb75237e94f21a065d621 Mon Sep 17 00:00:00 2001 From: Francis Charette Migneault Date: Mon, 20 Nov 2023 20:21:02 -0500 Subject: [PATCH 04/14] add newer python versions to tox --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index d317395..4dff597 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,6 @@ [tox] skipsdist = True -envlist = py36, py37, py38, py39, py310, py311, py312, pypy3, flake8, celery4, celery5 +envlist = py{36,37,38,39,310,py3}-{celery4,celery5}, py{311,312}-celery5, flake8 [base] commands = From a5cfd7e4654e9f62a2ef05afda525bbb02a74ec3 Mon Sep 17 00:00:00 2001 From: Francis Charette Migneault Date: Mon, 20 Nov 2023 20:26:54 -0500 Subject: [PATCH 05/14] add GitHub CI to run tests --- .github/workflows/test.yml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..58d27af --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,30 @@ +# run test suites + +name: Tests +on: + - pull_request + - push + - release + - workflow_dispatch + +# cancel the current workflow if another commit was pushed on the same PR or reference +# uses the GitHub workflow name to avoid collision with other workflows running on the same PR/reference +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install tox tox-gh-actions + - name: Test with tox + run: tox From e9f6fd881908c2781e1cf331f1b79105070465b3 Mon Sep 17 00:00:00 2001 From: Francis Charette Migneault Date: Mon, 20 Nov 2023 20:35:49 -0500 Subject: [PATCH 06/14] setup tox-gh-actions --- .github/workflows/test.yml | 32 +++++++++++++++++++------------- tox.ini | 16 ++++++++++++++++ 2 files changed, 35 insertions(+), 13 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 58d27af..db49424 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,16 +15,22 @@ concurrency: jobs: tests: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v1 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install tox tox-gh-actions - - name: Test with tox - run: tox + runs-on: ${{ matrix.platform }} + strategy: + matrix: + platform: [ ubuntu-latest, windows-latest ] + python-version: [ '3.6', '3.7', '3.8', '3.9', '3.10', '3.11', '3.12' ] + steps: + - uses: actions/checkout@v1 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install tox tox-gh-actions + - name: Test with tox + run: tox + env: + PLATFORM: ${{ matrix.platform }} diff --git a/tox.ini b/tox.ini index 4dff597..d3fcf3c 100644 --- a/tox.ini +++ b/tox.ini @@ -33,3 +33,19 @@ commands = {[base]commands} {envpython} -m pip install -U 'celery>3,<5' {envpython} -m pytest {posargs} + +[gh-actions] +python = + 3.6: py36-{celery4,celery5} + 3.7: py37-{celery4,celery5} + 3.8: py38-{celery4,celery5} + 3.9: py39-{celery4,celery5} + 3.10: py310-{celery4,celery5}, flake8 + 3.11: py311-celery5 + 3.12: py312-celery5 + +[gh-actions:env] +PLATFORM = + ubuntu-latest: linux + macos-latest: macos + windows-latest: windows From 826bb0c67cd5da2161c8a369e630eb2291df45ff Mon Sep 17 00:00:00 2001 From: Francis Charette Migneault Date: Mon, 20 Nov 2023 20:36:55 -0500 Subject: [PATCH 07/14] fix CI indent --- .github/workflows/test.yml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index db49424..2a71805 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,17 +20,17 @@ jobs: matrix: platform: [ ubuntu-latest, windows-latest ] python-version: [ '3.6', '3.7', '3.8', '3.9', '3.10', '3.11', '3.12' ] - steps: - - uses: actions/checkout@v1 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install tox tox-gh-actions - - name: Test with tox - run: tox - env: - PLATFORM: ${{ matrix.platform }} + steps: + - uses: actions/checkout@v1 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install tox tox-gh-actions + - name: Test with tox + run: tox + env: + PLATFORM: ${{ matrix.platform }} From c58ae055c0736fa497be7e4c7f685709a18fa3f8 Mon Sep 17 00:00:00 2001 From: Francis Charette Migneault Date: Mon, 20 Nov 2023 20:38:40 -0500 Subject: [PATCH 08/14] drop python3.6 on windows --- .github/workflows/test.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2a71805..17efde7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,7 +19,10 @@ jobs: strategy: matrix: platform: [ ubuntu-latest, windows-latest ] - python-version: [ '3.6', '3.7', '3.8', '3.9', '3.10', '3.11', '3.12' ] + python-version: [ '3.7', '3.8', '3.9', '3.10', '3.11', '3.12' ] + include: + - platform: ubuntu-latest + python-version: '3.6' steps: - uses: actions/checkout@v1 - name: Set up Python ${{ matrix.python-version }} From e7d1ec4746531804d48a164346c87d69dd4af7ad Mon Sep 17 00:00:00 2001 From: Francis Charette Migneault Date: Mon, 20 Nov 2023 20:39:33 -0500 Subject: [PATCH 09/14] drop py36 on CI altogether (not available) --- .github/workflows/test.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 17efde7..69a290c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,9 +20,6 @@ jobs: matrix: platform: [ ubuntu-latest, windows-latest ] python-version: [ '3.7', '3.8', '3.9', '3.10', '3.11', '3.12' ] - include: - - platform: ubuntu-latest - python-version: '3.6' steps: - uses: actions/checkout@v1 - name: Set up Python ${{ matrix.python-version }} From 00c01d19755a2b2e6d81a7797309fd04ac926acd Mon Sep 17 00:00:00 2001 From: Francis Charette Migneault Date: Mon, 20 Nov 2023 20:56:55 -0500 Subject: [PATCH 10/14] pin importlib for test py37 --- tox.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tox.ini b/tox.ini index d3fcf3c..565d572 100644 --- a/tox.ini +++ b/tox.ini @@ -22,6 +22,10 @@ commands = {envpython} -m pip install flake8 flake8 pyramid_celery/ tests/ +[testenv:py37] +deps = + importlib-metadata<5 + [testenv:celery5] commands = {[base]commands} From 1bdb2875428df3b881fff5b7fb76e5a4be36bb26 Mon Sep 17 00:00:00 2001 From: Francis Charette Migneault Date: Mon, 20 Nov 2023 21:03:08 -0500 Subject: [PATCH 11/14] patch celery import location --- pyramid_celery/__init__.py | 5 ++++- tests/conftest.py | 5 ++++- tox.ini | 4 ---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/pyramid_celery/__init__.py b/pyramid_celery/__init__.py index 583cca9..1e4f409 100644 --- a/pyramid_celery/__init__.py +++ b/pyramid_celery/__init__.py @@ -1,4 +1,7 @@ -from celery import Celery +try: + from celery import Celery +except ImportError: + from celery.app import Celery from celery import signals from celery import VERSION as celery_version diff --git a/tests/conftest.py b/tests/conftest.py index 21a19f0..17cb49e 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,7 +1,10 @@ import pyramid_celery import pytest -from celery import Celery +try: + from celery import Celery +except ImportError: + from celery.app import Celery @pytest.fixture(autouse=True) diff --git a/tox.ini b/tox.ini index 565d572..d3fcf3c 100644 --- a/tox.ini +++ b/tox.ini @@ -22,10 +22,6 @@ commands = {envpython} -m pip install flake8 flake8 pyramid_celery/ tests/ -[testenv:py37] -deps = - importlib-metadata<5 - [testenv:celery5] commands = {[base]commands} From 0b0eaffb52d11e474c9df82af8d6e307d576a789 Mon Sep 17 00:00:00 2001 From: Francis Charette Migneault Date: Mon, 20 Nov 2023 21:20:31 -0500 Subject: [PATCH 12/14] fix pyramid_celery/importlib-metadata deps for import location fix --- pyramid_celery/__init__.py | 5 +---- requirements.txt | 1 + tests/conftest.py | 5 +---- tox.ini | 2 +- 4 files changed, 4 insertions(+), 9 deletions(-) diff --git a/pyramid_celery/__init__.py b/pyramid_celery/__init__.py index 1e4f409..583cca9 100644 --- a/pyramid_celery/__init__.py +++ b/pyramid_celery/__init__.py @@ -1,7 +1,4 @@ -try: - from celery import Celery -except ImportError: - from celery.app import Celery +from celery import Celery from celery import signals from celery import VERSION as celery_version diff --git a/requirements.txt b/requirements.txt index 687e0c0..145d899 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ pyramid celery +importlib-metadata<5; python_version <= "3.7" diff --git a/tests/conftest.py b/tests/conftest.py index 17cb49e..21a19f0 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,10 +1,7 @@ import pyramid_celery import pytest -try: - from celery import Celery -except ImportError: - from celery.app import Celery +from celery import Celery @pytest.fixture(autouse=True) diff --git a/tox.ini b/tox.ini index d3fcf3c..5d5a452 100644 --- a/tox.ini +++ b/tox.ini @@ -4,7 +4,7 @@ envlist = py{36,37,38,39,310,py3}-{celery4,celery5}, py{311,312}-celery5, flake8 [base] commands = - {envpython} -m pip install -e . -r test-requirements.txt + {envpython} -m pip install -e . -r requirements.txt -r test-requirements.txt [testenv] pip_pre=False From bf0d4b93b84d290b842f2baed8eecb6a501188d5 Mon Sep 17 00:00:00 2001 From: Francis Charette Migneault Date: Mon, 20 Nov 2023 21:35:19 -0500 Subject: [PATCH 13/14] fix mock test --- tests/test_celery.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test_celery.py b/tests/test_celery.py index 3938601..d9c2cde 100644 --- a/tests/test_celery.py +++ b/tests/test_celery.py @@ -90,7 +90,7 @@ def test_preload_ini(): with mock.patch('pyramid_celery.bootstrap') as boot: on_preload_parsed(options) - assert boot.called_with('dev.ini') + boot.assert_called_with(options['ini']) @pytest.mark.unit @@ -121,8 +121,8 @@ def test_preload_with_ini_vars(): with mock.patch('pyramid_celery.bootstrap') as boot: on_preload_parsed(options) - expected_vars = {'database': 'foo', 'password': 'bar'} - assert boot.called_with('dev.ini', expected_vars) + expected_vars = {'database': 'foo', 'password': 'bar'} + boot.assert_called_with(options['ini'], options=expected_vars) @pytest.mark.unit @@ -143,7 +143,7 @@ def test_ini_logging(): format='', colorize=False, ) - assert setup_logging.called_with('tests/configs/dev.ini') + setup_logging.assert_called_with('tests/configs/dev.ini') @pytest.mark.unit From e9f757847cf727780595829a4fa1c7584d20f774 Mon Sep 17 00:00:00 2001 From: Francis Charette Migneault Date: Mon, 20 Nov 2023 21:41:22 -0500 Subject: [PATCH 14/14] add .tox to CI cache for faster tests --- .github/workflows/test.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 69a290c..fa26e52 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,6 +22,13 @@ jobs: python-version: [ '3.7', '3.8', '3.9', '3.10', '3.11', '3.12' ] steps: - uses: actions/checkout@v1 + - name: Cache .tox directory + uses: actions/cache@v2 + with: + path: '.tox' + # -X at the end can be bumped to force by-pass of a cache in case it's broken + # as GitHub actions does not support deletion of caches... + key: ${{ runner.os }}-${{ matrix.python-version }}-${{ hashFiles('*requirements*.txt') }}-X - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: