version: 2.1 jobs: build-and-test-py37: docker: - image: circleci/python:3.7.10 steps: - checkout - restore_cache: keys: - py37-v1-{{ checksum "requirements.txt" }}-{{ checksum "requirements-dev.txt" }} - run: pip install -r requirements.txt - run: pip install -r requirements-dev.txt - save_cache: key: py37-v1-{{ checksum "requirements.txt" }}-{{ checksum "requirements-dev.txt" }} paths: - '~/.cache/pip' - run: command: pip install -e . name: setup - run: command: pytest ./tests name: tests build-and-test-py38: docker: - image: circleci/python:3.8.1 steps: - checkout - restore_cache: keys: - py38-v1-{{ checksum "requirements.txt" }}-{{ checksum "requirements-dev.txt" }} - run: pip install -r requirements.txt - run: pip install -r requirements-dev.txt - save_cache: key: py38-v1-{{ checksum "requirements.txt" }}-{{ checksum "requirements-dev.txt" }} paths: - '~/.cache/pip' - run: command: pip install -e . name: setup - run: command: pytest ./tests name: tests build-and-test-py39: docker: - image: circleci/python:3.9.1 steps: - checkout - restore_cache: keys: - py39-v1-{{ checksum "requirements.txt" }}-{{ checksum "requirements-dev.txt" }} - run: pip install -r requirements.txt - run: pip install -r requirements-dev.txt - save_cache: key: py39-v1-{{ checksum "requirements.txt" }}-{{ checksum "requirements-dev.txt" }} paths: - '~/.cache/pip' - run: command: pip install -e . name: setup - run: command: pytest ./tests name: tests workflows: main: jobs: - build-and-test-py37 - build-and-test-py38 - build-and-test-py39