Revert "Removing OpenNebula code"
[osm/RO.git] / tox.ini
1 #######################################################################################
2 # Copyright ETSI Contributors and Others.
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 # http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
13 # implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 #######################################################################################
17
18 [tox]
19 envlist = black, flake8, safety
20
21 [tox:jenkins]
22 toxworkdir = /tmp/.tox
23
24 [testenv]
25 usedevelop = True
26 basepython = python3
27 setenv = VIRTUAL_ENV={envdir}
28 PYTHONDONTWRITEBYTECODE = 1
29 deps = -r{toxinidir}/requirements.txt
30 parallel_show_output = true
31
32
33 #######################################################################################
34 [testenv:release_notes]
35 deps = reno
36 skip_install = true
37 commands =
38 reno new {posargs:new_feature}
39
40
41 #######################################################################################
42 [testenv:black]
43 deps = black
44 skip_install = true
45 commands =
46 black --check --diff NG-RO
47 black --check --diff RO-plugin
48 black --check --diff RO-SDN-arista_cloudvision
49 black --check --diff RO-SDN-dpb
50 black --check --diff RO-SDN-dynpac
51 black --check --diff RO-SDN-floodlight_openflow
52 black --check --diff RO-SDN-ietfl2vpn
53 black --check --diff RO-SDN-juniper_contrail
54 black --check --diff RO-SDN-odl_openflow
55 black --check --diff RO-SDN-onos_openflow
56 black --check --diff RO-SDN-onos_vpls
57 black --check --diff RO-VIM-aws
58 black --check --diff RO-VIM-azure
59 black --check --diff RO-VIM-fos
60 # black --check --diff RO-VIM-opennebula
61 black --check --diff RO-VIM-openstack
62 black --check --diff RO-VIM-openvim
63 black --check --diff RO-VIM-vmware
64 black --check --diff RO-VIM-gcp
65 black --check --diff integration-tests
66
67
68 #######################################################################################
69 [testenv:cover]
70 deps = {[testenv]deps}
71 -r{toxinidir}/requirements-dev.txt
72 -r{toxinidir}/requirements-test.txt
73 skip_install = true
74 commands =
75 sh -c 'rm -f nosetests.xml'
76 coverage erase
77 # NG-RO
78 - nose2 -C --coverage NG-RO/osm_ng_ro
79 sh -c 'mv .coverage .coverage_ng_ro'
80 # RO-plugin
81 - nose2 -C --coverage RO-plugin/osm_ro_plugin
82 sh -c 'mv .coverage .coverage_ro_plugin'
83 # RO-SDN-arista_cloudvision
84 - nose2 -C --coverage RO-SDN-arista_cloudvision/osm_rosdn_arista_cloudvision
85 sh -c 'mv .coverage .coverage_rosdn_arista_cloudvision'
86 # RO-SDN-dpb
87 - nose2 -C --coverage RO-SDN-dpb/osm_rosdn_dpb
88 sh -c 'mv .coverage .coverage_rosdn_dpb'
89 # RO-SDN-dynpac
90 - nose2 -C --coverage RO-SDN-dynpac/osm_rosdn_dynpac
91 sh -c 'mv .coverage .coverage_rosdn_dynpac'
92 # RO-SDN-floodlight_openflow
93 - nose2 -C --coverage RO-SDN-floodlight_openflow/osm_rosdn_floodlightof
94 sh -c 'mv .coverage .coverage_rosdn_floodlightof'
95 # RO-SDN-ietfl2vpn
96 - nose2 -C --coverage RO-SDN-ietfl2vpn/osm_rosdn_ietfl2vpn
97 sh -c 'mv .coverage .coverage_rosdn_ietfl2vpn'
98 # RO-SDN-juniper_contrail
99 - nose2 -C --coverage RO-SDN-juniper_contrail/osm_rosdn_juniper_contrail
100 sh -c 'mv .coverage .coverage_rosdn_juniper_contrail'
101 # RO-SDN-odl_openflow
102 - nose2 -C --coverage RO-SDN-odl_openflow/osm_rosdn_odlof
103 sh -c 'mv .coverage .coverage_rosdn_odlof'
104 # RO-SDN-onos_openflow
105 - nose2 -C --coverage RO-SDN-onos_openflow/osm_rosdn_onosof
106 sh -c 'mv .coverage .coverage_rosdn_onosof'
107 # RO-SDN-onos_vpls
108 - nose2 -C --coverage RO-SDN-onos_vpls/osm_rosdn_onos_vpls
109 sh -c 'mv .coverage .coverage_rosdn_onos_vpls'
110 # RO-VIM-aws
111 - nose2 -C --coverage RO-VIM-aws/osm_rovim_aws
112 sh -c 'mv .coverage .coverage_rovim_aws'
113 # RO-VIM-azure
114 - nose2 -C --coverage RO-VIM-azure/osm_rovim_azure
115 sh -c 'mv .coverage .coverage_rovim_azure'
116 # RO-VIM-fos
117 - nose2 -C --coverage RO-VIM-fos/osm_rovim_fos
118 sh -c 'mv .coverage .coverage_rovim_fos'
119 # RO-VIM-opennebula
120 # nose2 -C --coverage RO-VIM-opennebula/osm_rovim_opennebula -s RO-VIM-opennebula/osm_rovim_opennebula
121 # sh -c 'mv .coverage .coverage_rovim_opennebula'
122 # RO-VIM-openstack
123 - nose2 -C --coverage RO-VIM-openstack/osm_rovim_openstack -s RO-VIM-openstack/osm_rovim_openstack
124 sh -c 'mv .coverage .coverage_rovim_openstack'
125 # RO-VIM-openvim
126 - nose2 -C --coverage RO-VIM-openvim/osm_rovim_openvim
127 sh -c 'mv .coverage .coverage_rovim_openvim'
128 # RO-VIM-vmware
129 - nose2 -C --coverage RO-VIM-vmware/osm_rovim_vmware -s RO-VIM-vmware/osm_rovim_vmware
130 sh -c 'mv .coverage .coverage_rovim_vmware'
131 # RO-VIM-gcp
132 - nose2 -C --coverage RO-VIM-gcp/osm_rovim_gcp
133 sh -c 'mv .coverage .coverage_rovim_gcp'
134 # Combine results and generate reports
135 coverage combine .coverage_ng_ro .coverage_ro_plugin .coverage_rosdn_arista_cloudvision .coverage_rosdn_dpb .coverage_rosdn_dynpac .coverage_rosdn_floodlightof .coverage_rosdn_ietfl2vpn .coverage_rosdn_juniper_contrail .coverage_rosdn_odlof .coverage_rosdn_onos_vpls .coverage_rosdn_onosof .coverage_rovim_aws .coverage_rovim_azure .coverage_rovim_fos .coverage_rovim_openvim .coverage_rovim_gcp # .coverage_rovim_openstack .coverage_rovim_vmware .coverage_rovim_opennebula
136 coverage report --omit='*tests*'
137 coverage html -d ./cover --omit='*tests*'
138 coverage xml -o coverage.xml --omit='*tests*'
139 whitelist_externals = sh
140
141
142 #######################################################################################
143 [testenv:flake8]
144 deps = flake8
145 skip_install = true
146 commands =
147 - flake8 NG-RO/osm_ng_ro/ NG-RO/setup.py
148 - flake8 RO-plugin/osm_ro_plugin/ RO-plugin/setup.py
149 - flake8 RO-SDN-arista_cloudvision/osm_rosdn_arista_cloudvision/ RO-SDN-arista_cloudvision/setup.py
150 - flake8 RO-SDN-dpb/osm_rosdn_dpb/ RO-SDN-dpb/setup.py
151 - flake8 RO-SDN-dynpac/osm_rosdn_dynpac/ RO-SDN-dynpac/setup.py
152 - flake8 RO-SDN-floodlight_openflow/osm_rosdn_floodlightof/ RO-SDN-floodlight_openflow/setup.py
153 - flake8 RO-SDN-ietfl2vpn/osm_rosdn_ietfl2vpn/ RO-SDN-ietfl2vpn/setup.py
154 - flake8 RO-SDN-juniper_contrail/osm_rosdn_juniper_contrail/ RO-SDN-juniper_contrail/setup.py
155 - flake8 RO-SDN-odl_openflow/osm_rosdn_odlof/ RO-SDN-odl_openflow/setup.py
156 - flake8 RO-SDN-onos_openflow/osm_rosdn_onosof/ RO-SDN-onos_openflow/setup.py
157 - flake8 RO-SDN-onos_vpls/osm_rosdn_onos_vpls/ RO-SDN-onos_vpls/setup.py
158 - flake8 RO-VIM-aws/osm_rovim_aws/ RO-VIM-aws/setup.py
159 - flake8 RO-VIM-azure/osm_rovim_azure/ RO-VIM-azure/setup.py
160 - flake8 RO-VIM-fos/osm_rovim_fos/ RO-VIM-fos/setup.py
161 # - flake8 RO-VIM-opennebula/osm_rovim_opennebula/ RO-VIM-opennebula/setup.py
162 - flake8 RO-VIM-openstack/osm_rovim_openstack/ RO-VIM-openstack/setup.py
163 - flake8 RO-VIM-openvim/osm_rovim_openvim/ RO-VIM-openvim/setup.py
164 - flake8 RO-VIM-vmware/osm_rovim_vmware/vimconn_vmware.py RO-VIM-vmware/osm_rovim_vmware/tests/test_vimconn_vmware.py RO-VIM-vmware/setup.py
165 - flake8 RO-VIM-gcp/osm_rovim_gcp/ RO-VIM-gcp/setup.py
166 - flake8 integration-tests/
167
168
169 #######################################################################################
170 [testenv:pylint]
171 deps = {[testenv]deps}
172 -r{toxinidir}/requirements-dev.txt
173 -r{toxinidir}/requirements-test.txt
174 pylint
175 skip_install = true
176 commands =
177 - pylint -E NG-RO/osm_ng_ro
178 - pylint -E RO-plugin/osm_ro_plugin
179 - pylint -E RO-SDN-arista_cloudvision/osm_rosdn_arista_cloudvision
180 - pylint -E RO-SDN-dpb/osm_rosdn_dpb
181 - pylint -E RO-SDN-dynpac/osm_rosdn_dynpac
182 - pylint -E RO-SDN-floodlight_openflow/osm_rosdn_floodlightof
183 - pylint -E RO-SDN-ietfl2vpn/osm_rosdn_ietfl2vpn
184 - pylint -E RO-SDN-juniper_contrail/osm_rosdn_juniper_contrail
185 - pylint -E RO-SDN-odl_openflow/osm_rosdn_odlof
186 - pylint -E RO-SDN-onos_openflow/osm_rosdn_onosof
187 - pylint -E RO-SDN-onos_vpls/osm_rosdn_onos_vpls
188 - pylint -E RO-VIM-aws/osm_rovim_aws
189 - pylint -E RO-VIM-azure/osm_rovim_azure
190 - pylint -E RO-VIM-fos/osm_rovim_fos
191 # - pylint -E RO-VIM-opennebula/osm_rovim_opennebula
192 - pylint -E RO-VIM-openstack/osm_rovim_openstack
193 - pylint -E RO-VIM-openvim/osm_rovim_openvim
194 - pylint -E RO-VIM-vmware/osm_rovim_vmware
195 - pylint -E RO-VIM-gcp/osm_rovim_gcp
196
197
198 #######################################################################################
199 [testenv:safety]
200 setenv =
201 LC_ALL=C.UTF-8
202 LANG=C.UTF-8
203 deps = {[testenv]deps}
204 safety
205 skip_install = true
206 commands =
207 - safety check --full-report
208
209
210 #######################################################################################
211 [testenv:pip-compile]
212 deps = pip-tools==5.5.0
213 skip_install = true
214 commands =
215 - sh -c "for file in requirements*.in ; do pip-compile -rU --no-header $file ;\
216 out=`echo $file | sed 's/.in/.txt/'` ; \
217 sed -i -e '1 e head -16 tox.ini' $out ;\
218 done"
219 whitelist_externals = sh
220
221
222 #######################################################################################
223 [testenv:dist_ng_ro]
224 deps = {[testenv]deps}
225 -r{toxinidir}/requirements-dist.txt
226 skip_install = true
227 changedir = {toxinidir}/NG-RO
228 commands =
229 sh -c 'rm -rf osm_ng_ro/requirements.txt deb_dist dist osm_ng_ro.egg-info osm_ng_ro*.tar.gz'
230 sh -c 'cp ../requirements.txt osm_ng_ro/requirements.txt'
231 python3 setup.py --command-packages=stdeb.command sdist_dsc
232 sh -c 'cd deb_dist/osm-ng-ro*/ && dpkg-buildpackage -rfakeroot -uc -us'
233 whitelist_externals = sh
234
235 #######################################################################################
236 [testenv:dist_ro_plugin]
237 deps = {[testenv]deps}
238 -r{toxinidir}/requirements-dist.txt
239 skip_install = true
240 changedir = {toxinidir}/RO-plugin
241 commands =
242 sh -c 'rm -rf deb_dist dist osm_ro_plugin.egg-info osm_ro_plugin*.tar.gz'
243 python3 setup.py --command-packages=stdeb.command sdist_dsc
244 sh -c 'cd deb_dist/osm-ro-plugin*/ && dpkg-buildpackage -rfakeroot -uc -us'
245 whitelist_externals = sh
246
247 #######################################################################################
248 [testenv:dist_ro_sdn_arista_cloudvision]
249 deps = {[testenv]deps}
250 -r{toxinidir}/requirements-dist.txt
251 skip_install = true
252 changedir = {toxinidir}/RO-SDN-arista_cloudvision
253 commands =
254 sh -c 'rm -rf deb_dist dist osm_rosdn_arista_cloudvision.egg-info osm_rosdn_arista_cloudvision*.tar.gz'
255 python3 setup.py --command-packages=stdeb.command sdist_dsc
256 sh -c 'cd deb_dist/osm-rosdn-arista-cloudvision*/ && dpkg-buildpackage -rfakeroot -uc -us'
257 whitelist_externals = sh
258
259 #######################################################################################
260 [testenv:dist_ro_sdn_dpb]
261 deps = {[testenv]deps}
262 -r{toxinidir}/requirements-dist.txt
263 skip_install = true
264 changedir = {toxinidir}/RO-SDN-dpb
265 commands =
266 sh -c 'rm -rf deb_dist dist osm_rosdn_dpb.egg-info osm_rosdn_dpb*.tar.gz'
267 python3 setup.py --command-packages=stdeb.command sdist_dsc
268 sh -c 'cd deb_dist/osm-rosdn-dpb*/ && dpkg-buildpackage -rfakeroot -uc -us'
269 whitelist_externals = sh
270
271 #######################################################################################
272 [testenv:dist_ro_sdn_dynpac]
273 deps = {[testenv]deps}
274 -r{toxinidir}/requirements-dist.txt
275 skip_install = true
276 changedir = {toxinidir}/RO-SDN-dynpac
277 commands =
278 sh -c 'rm -rf deb_dist dist osm_rosdn_dynpac.egg-info osm_rosdn_dynpac*.tar.gz'
279 python3 setup.py --command-packages=stdeb.command sdist_dsc
280 sh -c 'cd deb_dist/osm-rosdn-dynpac*/ && dpkg-buildpackage -rfakeroot -uc -us'
281 whitelist_externals = sh
282
283 #######################################################################################
284 [testenv:dist_ro_sdn_floodlight_of]
285 deps = {[testenv]deps}
286 -r{toxinidir}/requirements-dist.txt
287 skip_install = true
288 changedir = {toxinidir}/RO-SDN-floodlight_openflow
289 commands =
290 sh -c 'rm -rf deb_dist dist osm_rosdn_floodlightof.egg-info osm_rosdn_floodlightof*.tar.gz'
291 python3 setup.py --command-packages=stdeb.command sdist_dsc
292 sh -c 'cd deb_dist/osm-rosdn-floodlightof*/ && dpkg-buildpackage -rfakeroot -uc -us'
293 whitelist_externals = sh
294
295 #######################################################################################
296 [testenv:dist_ro_sdn_ietfl2vpn]
297 deps = {[testenv]deps}
298 -r{toxinidir}/requirements-dist.txt
299 skip_install = true
300 changedir = {toxinidir}/RO-SDN-ietfl2vpn
301 commands =
302 sh -c 'rm -rf deb_dist dist osm_rosdn_ietfl2vpn.egg-info osm_rosdn_ietfl2vpn*.tar.gz'
303 python3 setup.py --command-packages=stdeb.command sdist_dsc
304 sh -c 'cd deb_dist/osm-rosdn-ietfl2vpn*/ && dpkg-buildpackage -rfakeroot -uc -us'
305 whitelist_externals = sh
306
307 #######################################################################################
308 [testenv:dist_ro_sdn_juniper_contrail]
309 deps = {[testenv]deps}
310 -r{toxinidir}/requirements-dist.txt
311 skip_install = true
312 changedir = {toxinidir}/RO-SDN-juniper_contrail
313 commands =
314 sh -c 'rm -rf deb_dist dist osm_rosdn_juniper_contrail.egg-info osm_rosdn_juniper_contrail*.tar.gz'
315 python3 setup.py --command-packages=stdeb.command sdist_dsc
316 sh -c 'cd deb_dist/osm-rosdn-juniper-contrail*/ && dpkg-buildpackage -rfakeroot -uc -us'
317 whitelist_externals = sh
318
319 #######################################################################################
320 [testenv:dist_ro_sdn_odl_of]
321 deps = {[testenv]deps}
322 -r{toxinidir}/requirements-dist.txt
323 skip_install = true
324 changedir = {toxinidir}/RO-SDN-odl_openflow
325 commands =
326 sh -c 'rm -rf deb_dist dist osm_rosdn_odlof.egg-info osm_rosdn_odlof*.tar.gz'
327 python3 setup.py --command-packages=stdeb.command sdist_dsc
328 sh -c 'cd deb_dist/osm-rosdn-odlof*/ && dpkg-buildpackage -rfakeroot -uc -us'
329 whitelist_externals = sh
330
331 #######################################################################################
332 [testenv:dist_ro_sdn_onos_of]
333 deps = {[testenv]deps}
334 -r{toxinidir}/requirements-dist.txt
335 skip_install = true
336 changedir = {toxinidir}/RO-SDN-onos_openflow
337 commands =
338 sh -c 'rm -rf deb_dist dist osm_rosdn_onosof.egg-info osm_rosdn_onosof*.tar.gz'
339 python3 setup.py --command-packages=stdeb.command sdist_dsc
340 sh -c 'cd deb_dist/osm-rosdn-onosof*/ && dpkg-buildpackage -rfakeroot -uc -us'
341 whitelist_externals = sh
342
343 #######################################################################################
344 [testenv:dist_ro_sdn_onos_vpls]
345 deps = {[testenv]deps}
346 -r{toxinidir}/requirements-dist.txt
347 skip_install = true
348 changedir = {toxinidir}/RO-SDN-onos_vpls
349 commands =
350 sh -c 'rm -rf deb_dist dist osm_rosdn_onos_vpls.egg-info osm_rosdn_onos_vpls*.tar.gz'
351 python3 setup.py --command-packages=stdeb.command sdist_dsc
352 sh -c 'cd deb_dist/osm-rosdn-onos-vpls*/ && dpkg-buildpackage -rfakeroot -uc -us'
353 whitelist_externals = sh
354
355 #######################################################################################
356 [testenv:dist_ro_vim_aws]
357 deps = {[testenv]deps}
358 -r{toxinidir}/requirements-dist.txt
359 skip_install = true
360 changedir = {toxinidir}/RO-VIM-aws
361 commands =
362 sh -c 'rm -rf deb_dist dist osm_rovim_aws.egg-info osm_rovim_aws*.tar.gz'
363 python3 setup.py --command-packages=stdeb.command sdist_dsc
364 sh -c 'cd deb_dist/osm-rovim-aws*/ && dpkg-buildpackage -rfakeroot -uc -us'
365 whitelist_externals = sh
366
367 #######################################################################################
368 [testenv:dist_ro_vim_azure]
369 deps = {[testenv]deps}
370 -r{toxinidir}/requirements-dist.txt
371 skip_install = true
372 changedir = {toxinidir}/RO-VIM-azure
373 commands =
374 sh -c 'rm -rf deb_dist dist osm_rovim_azure.egg-info osm_rovim_azure*.tar.gz'
375 python3 setup.py --command-packages=stdeb.command sdist_dsc
376 sh -c 'cd deb_dist/osm-rovim-azure*/ && dpkg-buildpackage -rfakeroot -uc -us'
377 whitelist_externals = sh
378
379 #######################################################################################
380 [testenv:dist_ro_vim_fos]
381 deps = {[testenv]deps}
382 -r{toxinidir}/requirements-dist.txt
383 skip_install = true
384 changedir = {toxinidir}/RO-VIM-fos
385 commands =
386 sh -c 'rm -rf deb_dist dist osm_rovim_fos.egg-info osm_rovim_fos*.tar.gz'
387 python3 setup.py --command-packages=stdeb.command sdist_dsc
388 sh -c 'cd deb_dist/osm-rovim-fos*/ && dpkg-buildpackage -rfakeroot -uc -us'
389 whitelist_externals = sh
390
391 #######################################################################################
392 [testenv:dist_ro_vim_opennebula]
393 deps = {[testenv]deps}
394 -r{toxinidir}/requirements-dist.txt
395 skip_install = true
396 changedir = {toxinidir}/RO-VIM-opennebula
397 commands =
398 sh -c 'rm -rf deb_dist dist osm_rovim_opennebula.egg-info osm_rovim_opennebula*.tar.gz'
399 python3 setup.py --command-packages=stdeb.command sdist_dsc
400 sh -c 'cd deb_dist/osm-rovim-opennebula*/ && dpkg-buildpackage -rfakeroot -uc -us'
401 whitelist_externals = sh
402
403 #######################################################################################
404 [testenv:dist_ro_vim_openstack]
405 deps = {[testenv]deps}
406 -r{toxinidir}/requirements-dist.txt
407 skip_install = true
408 changedir = {toxinidir}/RO-VIM-openstack
409 commands =
410 sh -c 'rm -rf deb_dist dist osm_rovim_openstack.egg-info osm_rovim_openstack*.tar.gz'
411 python3 setup.py --command-packages=stdeb.command sdist_dsc
412 sh -c 'cd deb_dist/osm-rovim-openstack*/ && dpkg-buildpackage -rfakeroot -uc -us'
413 whitelist_externals = sh
414
415 #######################################################################################
416 [testenv:dist_ro_vim_openvim]
417 deps = {[testenv]deps}
418 -r{toxinidir}/requirements-dist.txt
419 skip_install = true
420 changedir = {toxinidir}/RO-VIM-openvim
421 commands =
422 sh -c 'rm -rf deb_dist dist osm_rovim_openvim.egg-info osm_rovim_openvim*.tar.gz'
423 python3 setup.py --command-packages=stdeb.command sdist_dsc
424 sh -c 'cd deb_dist/osm-rovim-openvim*/ && dpkg-buildpackage -rfakeroot -uc -us'
425 whitelist_externals = sh
426
427 #######################################################################################
428 [testenv:dist_ro_vim_vmware]
429 deps = {[testenv]deps}
430 -r{toxinidir}/requirements-dist.txt
431 skip_install = true
432 changedir = {toxinidir}/RO-VIM-vmware
433 commands =
434 sh -c 'rm -rf deb_dist dist osm_rovim_vmware.egg-info osm_rovim_vmware*.tar.gz'
435 python3 setup.py --command-packages=stdeb.command sdist_dsc
436 sh -c 'cd deb_dist/osm-rovim-vmware*/ && dpkg-buildpackage -rfakeroot -uc -us'
437 whitelist_externals = sh
438
439 #######################################################################################
440 [testenv:dist_ro_vim_gcp]
441 deps = {[testenv]deps}
442 -r{toxinidir}/requirements-dist.txt
443 skip_install = true
444 changedir = {toxinidir}/RO-VIM-gcp
445 commands =
446 sh -c 'rm -rf deb_dist dist osm_rovim_gcp.egg-info osm_rovim_gcp*.tar.gz'
447 python3 setup.py --command-packages=stdeb.command sdist_dsc
448 sh -c 'cd deb_dist/osm-rovim-gcp*/ && dpkg-buildpackage -rfakeroot -uc -us'
449 whitelist_externals = sh
450
451
452 #######################################################################################
453 [flake8]
454 ignore =
455 W291,
456 W293,
457 W503,
458 W605,
459 E123,
460 E125,
461 E203,
462 E226,
463 E241
464 exclude =
465 .git,
466 __pycache__,
467 .tox,
468 max-line-length = 120
469 show-source = True
470 builtins = _