# Python CircleCI 2.0 configuration file # # Check https://circleci.com/docs/2.0/language-python/ for more details # version: 2.0 references: install_deps: &install_deps run: name: Install Dependences command: | sudo apt-get update && sudo apt-get install -y cmake pip install "$TORCH_VERSION" pip install -r requirements.txt -q sudo pip install pytest -q pip install -r ./tests/requirements-devel.txt -q tests: &tests run: name: Testing command: | python --version ; pip --version ; pip list py.test pytorch_lightning tests -v --doctest-modules --junitxml=test-reports/pytest_junit.xml no_output_timeout: 15m examples: &examples run: name: PL Examples command: | pip install -r ./pl_examples/requirements.txt --user python --version ; pip --version ; pip list py.test pl_examples -v --doctest-modules --junitxml=test-reports/pytest_junit.xml no_output_timeout: 20m install_pkg: &install_pkg run: name: Install package command: | virtualenv vEnv ; source vEnv/bin/activate pip install --editable . ; cd .. & python -c "import pytorch_lightning ; print(pytorch_lightning.__version__)" deactivate ; rm -rf vEnv create_pkg: &create_pkg run: name: Create package command: | sudo pip install twine==1.13.0 python setup.py sdist twine check dist/* python setup.py clean format: &format run: name: Formatting command: | python --version ; pip --version sudo pip install flake8 -q pip list flake8 . make_docs: &make_docs run: name: Make Documentation command: | # First run the same pipeline as Read-The-Docs sudo apt-get update && sudo apt-get install -y cmake sudo pip install -r docs/requirements.txt cd docs; make clean; make html --debug --jobs 2 SPHINXOPTS="-W" test_docs: &test_docs run: name: Testing Documentation command: | # Second run examples in docs sudo apt-get update && sudo apt-get install -y cmake sudo pip install -r docs/requirements.txt cd docs; make doctest; make coverage jobs: Build-Docs: docker: - image: circleci/python:3.7 steps: - checkout - *make_docs - store_artifacts: # allows us to preview the generated html pages path: docs/build/html/ destination: html Formatting: docker: - image: circleci/python:3.7 environment: - TORCH_VERSION: "torch" steps: - checkout - *format PyTorch: docker: - image: circleci/python:3.6 environment: - TORCH_VERSION: "torch" steps: &steps - checkout #- restore_cache: # keys: # # when lock file changes, use increasingly general patterns to restore cache # - pip-packages--{{ .Environment.CIRCLE_JOB }} # - pip-packages-- - *install_deps #- save_cache: # key: pip-packages--{{ .Environment.CIRCLE_JOB }} # paths: # # this path depends on where pipenv creates a virtualenv # - "~/.cache/pip" # - "/usr/local/lib/python3.6/site-packages" # - "/usr/local/lib/site-python" - *tests - store_test_results: path: test-reports - store_artifacts: path: test-reports PyTorch-v1_3: docker: - image: circleci/python:3.6 environment: - TORCH_VERSION: "torch>=1.3, <1.4" steps: *steps PyTorch-v1_4: docker: - image: circleci/python:3.6 environment: - TORCH_VERSION: "torch>=1.4, <1.5" steps: *steps PyTorch-v1_5: docker: - image: circleci/python:3.6 environment: - TORCH_VERSION: "torch>=1.5, <1.6" steps: *steps Examples: docker: - image: circleci/python:3.7 environment: - TORCH_VERSION: "torch" - SPHINX_MOCK_REQUIREMENTS: 0 steps: - checkout - *install_deps - *test_docs - *examples Install-pkg: docker: - image: circleci/python:3.7 steps: - checkout - *create_pkg - *install_pkg #orbs: # python: circleci/python@0.2.1 workflows: version: 2 build: jobs: - Formatting - Build-Docs - PyTorch-v1_3 - PyTorch-v1_4 - PyTorch-v1_5 - Install-pkg - Examples