forked from explosion/thinc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathazure-pipelines.yml
132 lines (118 loc) · 3.89 KB
/
azure-pipelines.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
trigger:
batch: true
branches:
include:
- '*'
paths:
exclude:
- 'website/*'
- '*.md'
pr:
paths:
exclude:
- 'website/*'
- '*.md'
jobs:
- job: 'Test'
variables:
NOTEBOOK_KERNEL: "thinc-notebook-tests"
strategy:
matrix:
Python36Windows:
imageName: 'windows-2019'
python.version: '3.6'
Python37Mac:
imageName: 'macos-latest'
python.version: '3.7'
Python38Linux:
imageName: 'ubuntu-latest'
python.version: '3.8'
Python39Windows:
imageName: 'windows-latest'
python.version: '3.9'
Python310Mac:
imageName: 'macos-latest'
python.version: '3.10'
Python311Linux:
imageName: 'ubuntu-latest'
python.version: '3.11'
Python311Windows:
imageName: 'windows-latest'
python.version: '3.11'
Python311Mac:
imageName: 'macos-latest'
python.version: '3.11'
maxParallel: 4
pool:
vmImage: $(imageName)
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '$(python.version)'
architecture: 'x64'
allowUnstable: true
- script: |
python -m pip install --upgrade pip setuptools wheel
pip install -r requirements.txt
displayName: 'Install dependencies'
- script: |
python setup.py build_ext --inplace
python setup.py sdist --formats=gztar
displayName: 'Build sdist'
- script: |
python -m mypy thinc --no-implicit-reexport
displayName: 'Run mypy'
condition: ne(variables['python.version'], '3.6')
- task: DeleteFiles@1
inputs:
contents: 'thinc'
displayName: 'Delete source directory'
- script: |
python -m pip freeze
pip freeze --exclude pywin32 > installed.txt
pip uninstall -y -r installed.txt
displayName: 'Uninstall all packages'
- bash: |
SDIST=$(python -c "import os;print(os.listdir('./dist')[-1])" 2>&1)
PIP_CONSTRAINT="build-constraints.txt" pip install dist/$SDIST
displayName: 'Install from sdist'
- bash: |
python -c "import thinc"
displayName: 'Test import'
- script: |
pip install -r requirements.txt
pip install ipykernel pydot graphviz
python -m ipykernel install --name thinc-notebook-tests --user
python -m pytest --pyargs thinc --cov=thinc --cov-report=term
displayName: 'Run tests without extras'
# Notes on numpy requirements hacks:
# 1. torch does not have a direct numpy requirement but is compiled
# against a newer version than the oldest supported numpy for windows and
# python 3.10; this version of numpy would not work with
# tensorflow~=2.5.0 as specified above, but there is no release for
# python 3.10 anyway
# 2. restrict to numpy<1.24.0 due to mxnet incompatibility
# 3. keep restriction to torch<1.13.0 due to segfaults with numpy<1.24.0,
# which skips torch for python 3.11
- script: |
pip install "protobuf~=3.20.0" "tensorflow~=2.5.0"
pip install "mxnet; sys_platform != 'win32'"
pip install "torch<1.13.0" --extra-index-url https://download.pytorch.org/whl/cpu
pip install "numpy~=1.23.0; python_version=='3.10' and sys_platform=='win32'"
pip install "numpy<1.24.0"
pip install -r requirements.txt
pip uninstall -y mypy
displayName: 'Install extras for testing'
- script: |
python -m pytest --pyargs thinc --cov=thinc --cov-report=term
displayName: 'Run tests with extras'
- script: |
pip uninstall -y tensorflow
pip install thinc-apple-ops
python -m pytest --pyargs thinc_apple_ops
displayName: 'Run tests for thinc-apple-ops'
condition: and(startsWith(variables['imageName'], 'macos'), eq(variables['python.version'], '3.10'))
- script: |
python -m pytest --pyargs thinc
displayName: 'Run tests with thinc-apple-ops'
condition: and(startsWith(variables['imageName'], 'macos'), eq(variables['python.version'], '3.10'))