trigger: batch: true branches: include: - '*' exclude: - 'spacy.io' paths: exclude: - 'website/*' - '*.md' pr: paths: exclude: - 'website/*' - '*.md' jobs: # Perform basic checks for most important errors (syntax etc.) Uses the config # defined in .flake8 and overwrites the selected codes. - job: 'Validate' pool: vmImage: 'ubuntu-16.04' steps: - task: UsePythonVersion@0 inputs: versionSpec: '3.7' - script: | pip install flake8 python -m flake8 spacy --count --select=E901,E999,F821,F822,F823 --show-source --statistics displayName: 'flake8' - job: 'Test' dependsOn: 'Validate' strategy: matrix: Python35Linux: imageName: 'ubuntu-16.04' python.version: '3.5' os: linux Python35Windows: imageName: 'vs2017-win2016' python.version: '3.5' # Test on one OS per python 3.6/3.7/3.8 to speed up CI Python36Linux: imageName: 'ubuntu-16.04' python.version: '3.6' # Python36Windows: # imageName: 'vs2017-win2016' # python.version: '3.6' # Python36Mac: # imageName: 'macos-10.14' # python.version: '3.6' # Python37Linux: # imageName: 'ubuntu-16.04' # python.version: '3.7' Python37Windows: imageName: 'vs2017-win2016' python.version: '3.7' # Python37Mac: # imageName: 'macos-10.14' # python.version: '3.7' # Python38Linux: # imageName: 'ubuntu-16.04' # python.version: '3.8' # Python38Windows: # imageName: 'vs2017-win2016' # python.version: '3.8' Python38Mac: imageName: 'macos-10.14' python.version: '3.8' Python39Linux: imageName: 'ubuntu-16.04' python.version: '3.9' Python39Windows: imageName: 'vs2017-win2016' python.version: '3.9' Python39Mac: imageName: 'macos-10.14' python.version: '3.9' maxParallel: 4 pool: vmImage: $(imageName) steps: - task: UsePythonVersion@0 inputs: versionSpec: '$(python.version)' architecture: 'x64' - script: | python -m pip install -U pip setuptools pip install -r requirements.txt --prefer-binary displayName: 'Install dependencies' - script: | python setup.py build_ext --inplace -j 2 python setup.py sdist --formats=gztar displayName: 'Compile and build sdist' - task: DeleteFiles@1 inputs: contents: 'spacy' displayName: 'Delete source directory' - script: | pip freeze > installed.txt pip uninstall -y -r installed.txt displayName: 'Uninstall all packages' - script: | pip install wheel condition: and(eq(variables['os'], 'linux'), eq(variables['python.version'], '3.5')) displayName: 'Hack: install wheel for python 3.5' - bash: | SDIST=$(python -c "import os;print(os.listdir('./dist')[-1])" 2>&1) pip install dist/$SDIST displayName: 'Install from sdist' - script: | pip install -r requirements.txt --prefer-binary python -m pytest --pyargs spacy displayName: 'Run tests'