language: python dist: focal addons: apt: packages: - libdbus-1-dev matrix: include: - python: "3.6" env: TOXENV=py36 - python: "3.7" env: TOXENV=py37 - python: "3.8" env: TOXENV=py38 - python: "3.9" env: TOXENV=py39 - python: "3.10" env: TOXENV=py310 - python: "3.11-dev" env: TOXENV=py311 # PyPy Environments - python: "pypy3.6-7.3.3" env: TOXENV=pypy36 - python: "pypy3.9-7.3.9" env: TOXENV=pypy39 # An extra environment where additional packages are not installed - python: "3.9" env: - TOXENV=bare install: - pip install babel # Use up-to-date versions of tox, pip, virtualenv, and wheel. - pip install --upgrade tox pip virtualenv wheel # cryptography 3.3 is the last one not needing a Rust toolchain. Let's use it for PyPy. - if [[ $TOXENV == 'pypy'* ]]; then pip install "cryptography<3.4"; fi # Install project dependencies. - pip install codecov - pip install -r dev-requirements.txt - pip install -r requirements.txt # bare installs do not include extra package dependencies - if [[ $TOXENV != 'bare' ]]; then pip install -r all-plugin-requirements.txt; fi # pypy and bare installs do not include dbus-python - if [[ $TOXENV != 'bare' ]] && [[ $TRAVIS_PYTHON_VERSION != 'pypy'* ]]; then travis_retry pip install dbus-python; fi # Fix/workaround: Python 3.7 importlib-metadata becomes incompatible with flake8, # unless we use a version that still supports EntryPoints.get(). # `tox.ini` has been updated to not call flake8 on Python 3.7. - if [[ $TOXENV == 'py37' || $TOXENV == 'pypy37' ]]; then pip uninstall --yes flake8; fi # run tests script: - tox after_success: - tox -e coverage-report - codecov notifications: email: false