version: 2.1 # heavily inspired by https://raw.githubusercontent.com/pinax/pinax-wiki/6bd2a99ab6f702e300d708532a6d1d9aa638b9f8/.circleci/config.yml common: &common working_directory: ~/repo steps: - checkout - run: name: merge pull request base command: ./.circleci/merge_pr.sh - run: name: merge pull request base (2nd try) command: ./.circleci/merge_pr.sh when: on_fail - run: name: merge pull request base (3rd try) command: ./.circleci/merge_pr.sh when: on_fail - restore_cache: keys: - cache-v1-{{ arch }}-{{ .Environment.CIRCLE_JOB }}-{{ checksum "setup.py" }}-{{ checksum "tox.ini" }} - run: name: install dependencies command: | python -m pip install --upgrade pip python -m pip install tox - run: name: run tox command: python -m tox run -r - save_cache: paths: - .hypothesis - .tox - ~/.cache/pip - ~/.local key: cache-v1-{{ arch }}-{{ .Environment.CIRCLE_JOB }}-{{ checksum "setup.py" }}-{{ checksum "tox.ini" }} orbs: win: circleci/windows@5.0.0 windows_steps: &windows_steps executor: name: win/default shell: bash.exe working_directory: C:\Users\circleci\project\ steps: - checkout - restore_cache: keys: - cache-v1-{{ arch }}-{{ .Environment.CIRCLE_JOB }}-{{ checksum "setup.py" }}-{{ checksum "tox.ini" }} - run: name: install dependencies command: | python -m pip install --upgrade pip python -m pip install tox - run: name: run tox command: python -m tox run -r - save_cache: paths: - .tox key: cache-v1-{{ arch }}-{{ .Environment.CIRCLE_JOB }}-{{ checksum "setup.py" }}-{{ checksum "tox.ini" }} jobs: docs: <<: *common docker: - image: cimg/python:3.8 environment: TOXENV: docs py38-core: <<: *common docker: - image: cimg/python:3.8 environment: TOXENV: py38-core py39-core: <<: *common docker: - image: cimg/python:3.9 environment: TOXENV: py39-core py310-core: <<: *common docker: - image: cimg/python:3.10 environment: TOXENV: py310-core py311-core: <<: *common docker: - image: cimg/python:3.11 environment: TOXENV: py311-core py312-core: <<: *common docker: - image: cimg/python:3.12 environment: TOXENV: py312-core py38-lint: <<: *common docker: - image: cimg/python:3.8 environment: TOXENV: py38-lint py39-lint: <<: *common docker: - image: cimg/python:3.9 environment: TOXENV: py39-lint py310-lint: <<: *common docker: - image: cimg/python:3.10 environment: TOXENV: py310-lint py311-lint: <<: *common docker: - image: cimg/python:3.11 environment: TOXENV: py311-lint py312-lint: <<: *common docker: - image: cimg/python:3.12 environment: TOXENV: py312-lint py38-wheel: <<: *common docker: - image: cimg/python:3.8 environment: TOXENV: py38-wheel py39-wheel: <<: *common docker: - image: cimg/python:3.9 environment: TOXENV: py39-wheel py310-wheel: <<: *common docker: - image: cimg/python:3.10 environment: TOXENV: py310-wheel py311-wheel: <<: *common docker: - image: cimg/python:3.11 environment: TOXENV: py311-wheel py312-wheel: <<: *common docker: - image: cimg/python:3.12 environment: TOXENV: py312-wheel py311-wheel-windows: <<: *windows_steps environment: TOXENV: py311-wheel-windows workflows: version: 2 test: jobs: - docs - py38-core - py39-core - py310-core - py311-core - py312-core - py38-lint - py39-lint - py310-lint - py311-lint - py312-lint - py38-wheel - py39-wheel - py310-wheel - py311-wheel - py312-wheel - py311-wheel-windows