Fix bug 1733 to add integration tests to GCP
[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, pylint, 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
66
67 #######################################################################################
68 [testenv:cover]
69 deps = {[testenv]deps}
70 -r{toxinidir}/requirements-dev.txt
71 -r{toxinidir}/requirements-test.txt
72 skip_install = true
73 commands =
74 sh -c 'rm -f nosetests.xml'
75 coverage erase
76 # NG-RO
77 - nose2 -C --coverage NG-RO/osm_ng_ro
78 sh -c 'mv .coverage .coverage_ng_ro'
79 # RO-plugin
80 - nose2 -C --coverage RO-plugin/osm_ro_plugin
81 sh -c 'mv .coverage .coverage_ro_plugin'
82 # RO-SDN-arista_cloudvision
83 - nose2 -C --coverage RO-SDN-arista_cloudvision/osm_rosdn_arista_cloudvision
84 sh -c 'mv .coverage .coverage_rosdn_arista_cloudvision'
85 # RO-SDN-dpb
86 - nose2 -C --coverage RO-SDN-dpb/osm_rosdn_dpb
87 sh -c 'mv .coverage .coverage_rosdn_dpb'
88 # RO-SDN-dynpac
89 - nose2 -C --coverage RO-SDN-dynpac/osm_rosdn_dynpac
90 sh -c 'mv .coverage .coverage_rosdn_dynpac'
91 # RO-SDN-floodlight_openflow
92 - nose2 -C --coverage RO-SDN-floodlight_openflow/osm_rosdn_floodlightof
93 sh -c 'mv .coverage .coverage_rosdn_floodlightof'
94 # RO-SDN-ietfl2vpn
95 - nose2 -C --coverage RO-SDN-ietfl2vpn/osm_rosdn_ietfl2vpn
96 sh -c 'mv .coverage .coverage_rosdn_ietfl2vpn'
97 # RO-SDN-juniper_contrail
98 - nose2 -C --coverage RO-SDN-juniper_contrail/osm_rosdn_juniper_contrail
99 sh -c 'mv .coverage .coverage_rosdn_juniper_contrail'
100 # RO-SDN-odl_openflow
101 - nose2 -C --coverage RO-SDN-odl_openflow/osm_rosdn_odlof
102 sh -c 'mv .coverage .coverage_rosdn_odlof'
103 # RO-SDN-onos_openflow
104 - nose2 -C --coverage RO-SDN-onos_openflow/osm_rosdn_onosof
105 sh -c 'mv .coverage .coverage_rosdn_onosof'
106 # RO-SDN-onos_vpls
107 - nose2 -C --coverage RO-SDN-onos_vpls/osm_rosdn_onos_vpls
108 sh -c 'mv .coverage .coverage_rosdn_onos_vpls'
109 # RO-VIM-aws
110 - nose2 -C --coverage RO-VIM-aws/osm_rovim_aws
111 sh -c 'mv .coverage .coverage_rovim_aws'
112 # RO-VIM-azure
113 - nose2 -C --coverage RO-VIM-azure/osm_rovim_azure
114 sh -c 'mv .coverage .coverage_rovim_azure'
115 # RO-VIM-fos
116 - nose2 -C --coverage RO-VIM-fos/osm_rovim_fos
117 sh -c 'mv .coverage .coverage_rovim_fos'
118 # RO-VIM-opennebula
119 - nose2 -C --coverage RO-VIM-opennebula/osm_rovim_opennebula
120 sh -c 'mv .coverage .coverage_rovim_opennebula'
121 # RO-VIM-openstack
122 - nose2 -C --coverage RO-VIM-openstack/osm_rovim_openstack -s RO-VIM-openstack/osm_rovim_openstack
123 sh -c 'mv .coverage .coverage_rovim_openstack'
124 # RO-VIM-openvim
125 - nose2 -C --coverage RO-VIM-openvim/osm_rovim_openvim
126 sh -c 'mv .coverage .coverage_rovim_openvim'
127 # RO-VIM-vmware
128 - nose2 -C --coverage RO-VIM-vmware/osm_rovim_vmware -s RO-VIM-vmware/osm_rovim_vmware
129 sh -c 'mv .coverage .coverage_rovim_vmware'
130 # RO-VIM-gcp
131 - nose2 -C --coverage RO-VIM-gcp/osm_rovim_gcp
132 sh -c 'mv .coverage .coverage_rovim_gcp'
133 # Combine results and generate reports
134 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_opennebula .coverage_rovim_openstack .coverage_rovim_openvim .coverage_rovim_vmware .coverage_rovim_gcp
135 coverage report --omit='*tests*'
136 coverage html -d ./cover --omit='*tests*'
137 coverage xml -o coverage.xml --omit='*tests*'
138 whitelist_externals = sh
139
140
141 #######################################################################################
142 [testenv:flake8]
143 deps = flake8
144 skip_install = true
145 commands =
146 - flake8 NG-RO/osm_ng_ro/ NG-RO/setup.py
147 - flake8 RO-plugin/osm_ro_plugin/ RO-plugin/setup.py
148 - flake8 RO-SDN-arista_cloudvision/osm_rosdn_arista_cloudvision/ RO-SDN-arista_cloudvision/setup.py
149 - flake8 RO-SDN-dpb/osm_rosdn_dpb/ RO-SDN-dpb/setup.py
150 - flake8 RO-SDN-dynpac/osm_rosdn_dynpac/ RO-SDN-dynpac/setup.py
151 - flake8 RO-SDN-floodlight_openflow/osm_rosdn_floodlightof/ RO-SDN-floodlight_openflow/setup.py
152 - flake8 RO-SDN-ietfl2vpn/osm_rosdn_ietfl2vpn/ RO-SDN-ietfl2vpn/setup.py
153 - flake8 RO-SDN-juniper_contrail/osm_rosdn_juniper_contrail/ RO-SDN-juniper_contrail/setup.py
154 - flake8 RO-SDN-odl_openflow/osm_rosdn_odlof/ RO-SDN-odl_openflow/setup.py
155 - flake8 RO-SDN-onos_openflow/osm_rosdn_onosof/ RO-SDN-onos_openflow/setup.py
156 - flake8 RO-SDN-onos_vpls/osm_rosdn_onos_vpls/ RO-SDN-onos_vpls/setup.py
157 - flake8 RO-VIM-aws/osm_rovim_aws/ RO-VIM-aws/setup.py
158 - flake8 RO-VIM-azure/osm_rovim_azure/ RO-VIM-azure/setup.py
159 - flake8 RO-VIM-fos/osm_rovim_fos/ RO-VIM-fos/setup.py
160 - flake8 RO-VIM-opennebula/osm_rovim_opennebula/ RO-VIM-opennebula/setup.py
161 - flake8 RO-VIM-openstack/osm_rovim_openstack/ RO-VIM-openstack/setup.py
162 - flake8 RO-VIM-openvim/osm_rovim_openvim/ RO-VIM-openvim/setup.py
163 - 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
164 - flake8 RO-VIM-gcp/osm_rovim_gcp/ RO-VIM-gcp/setup.py
165 - flake8 integration-tests/
166
167
168 #######################################################################################
169 [testenv:pylint]
170 deps = {[testenv]deps}
171 -r{toxinidir}/requirements-dev.txt
172 -r{toxinidir}/requirements-test.txt
173 pylint
174 skip_install = true
175 commands =
176 - pylint -E NG-RO/osm_ng_ro
177 - pylint -E RO-plugin/osm_ro_plugin
178 - pylint -E RO-SDN-arista_cloudvision/osm_rosdn_arista_cloudvision
179 - pylint -E RO-SDN-dpb/osm_rosdn_dpb
180 - pylint -E RO-SDN-dynpac/osm_rosdn_dynpac
181 - pylint -E RO-SDN-floodlight_openflow/osm_rosdn_floodlightof
182 - pylint -E RO-SDN-ietfl2vpn/osm_rosdn_ietfl2vpn
183 - pylint -E RO-SDN-juniper_contrail/osm_rosdn_juniper_contrail
184 - pylint -E RO-SDN-odl_openflow/osm_rosdn_odlof
185 - pylint -E RO-SDN-onos_openflow/osm_rosdn_onosof
186 - pylint -E RO-SDN-onos_vpls/osm_rosdn_onos_vpls
187 - pylint -E RO-VIM-aws/osm_rovim_aws
188 - pylint -E RO-VIM-azure/osm_rovim_azure
189 - pylint -E RO-VIM-fos/osm_rovim_fos
190 - pylint -E RO-VIM-opennebula/osm_rovim_opennebula
191 - pylint -E RO-VIM-openstack/osm_rovim_openstack
192 - pylint -E RO-VIM-openvim/osm_rovim_openvim
193 - pylint -E RO-VIM-vmware/osm_rovim_vmware
194 - pylint -E RO-VIM-gcp/osm_rovim_gcp
195
196
197 #######################################################################################
198 [testenv:safety]
199 setenv =
200 LC_ALL=C.UTF-8
201 LANG=C.UTF-8
202 deps = {[testenv]deps}
203 safety
204 skip_install = true
205 commands =
206 - safety check --full-report
207
208
209 #######################################################################################
210 [testenv:pip-compile]
211 deps = pip-tools==5.5.0
212 skip_install = true
213 commands =
214 - sh -c "for file in requirements*.in ; do pip-compile -rU --no-header $file ;\
215 out=`echo $file | sed 's/.in/.txt/'` ; \
216 sed -i -e '1 e head -16 tox.ini' $out ;\
217 done"
218 whitelist_externals = sh
219
220
221 #######################################################################################
222 [testenv:dist_ng_ro]
223 deps = {[testenv]deps}
224 -r{toxinidir}/requirements-dist.txt
225 skip_install = true
226 changedir = {toxinidir}/NG-RO
227 commands =
228 sh -c 'rm -rf osm_ng_ro/requirements.txt deb_dist dist osm_ng_ro.egg-info osm_ng_ro*.tar.gz'
229 sh -c 'cp ../requirements.txt osm_ng_ro/requirements.txt'
230 python3 setup.py --command-packages=stdeb.command sdist_dsc
231 sh -c 'cd deb_dist/osm-ng-ro*/ && dpkg-buildpackage -rfakeroot -uc -us'
232 whitelist_externals = sh
233
234 #######################################################################################
235 [testenv:dist_ro_plugin]
236 deps = {[testenv]deps}
237 -r{toxinidir}/requirements-dist.txt
238 skip_install = true
239 changedir = {toxinidir}/RO-plugin
240 commands =
241 sh -c 'rm -rf deb_dist dist osm_ro_plugin.egg-info osm_ro_plugin*.tar.gz'
242 python3 setup.py --command-packages=stdeb.command sdist_dsc
243 sh -c 'cd deb_dist/osm-ro-plugin*/ && dpkg-buildpackage -rfakeroot -uc -us'
244 whitelist_externals = sh
245
246 #######################################################################################
247 [testenv:dist_ro_sdn_arista_cloudvision]
248 deps = {[testenv]deps}
249 -r{toxinidir}/requirements-dist.txt
250 skip_install = true
251 changedir = {toxinidir}/RO-SDN-arista_cloudvision
252 commands =
253 sh -c 'rm -rf deb_dist dist osm_rosdn_arista_cloudvision.egg-info osm_rosdn_arista_cloudvision*.tar.gz'
254 python3 setup.py --command-packages=stdeb.command sdist_dsc
255 sh -c 'cd deb_dist/osm-rosdn-arista-cloudvision*/ && dpkg-buildpackage -rfakeroot -uc -us'
256 whitelist_externals = sh
257
258 #######################################################################################
259 [testenv:dist_ro_sdn_dpb]
260 deps = {[testenv]deps}
261 -r{toxinidir}/requirements-dist.txt
262 skip_install = true
263 changedir = {toxinidir}/RO-SDN-dpb
264 commands =
265 sh -c 'rm -rf deb_dist dist osm_rosdn_dpb.egg-info osm_rosdn_dpb*.tar.gz'
266 python3 setup.py --command-packages=stdeb.command sdist_dsc
267 sh -c 'cd deb_dist/osm-rosdn-dpb*/ && dpkg-buildpackage -rfakeroot -uc -us'
268 whitelist_externals = sh
269
270 #######################################################################################
271 [testenv:dist_ro_sdn_dynpac]
272 deps = {[testenv]deps}
273 -r{toxinidir}/requirements-dist.txt
274 skip_install = true
275 changedir = {toxinidir}/RO-SDN-dynpac
276 commands =
277 sh -c 'rm -rf deb_dist dist osm_rosdn_dynpac.egg-info osm_rosdn_dynpac*.tar.gz'
278 python3 setup.py --command-packages=stdeb.command sdist_dsc
279 sh -c 'cd deb_dist/osm-rosdn-dynpac*/ && dpkg-buildpackage -rfakeroot -uc -us'
280 whitelist_externals = sh
281
282 #######################################################################################
283 [testenv:dist_ro_sdn_floodlight_of]
284 deps = {[testenv]deps}
285 -r{toxinidir}/requirements-dist.txt
286 skip_install = true
287 changedir = {toxinidir}/RO-SDN-floodlight_openflow
288 commands =
289 sh -c 'rm -rf deb_dist dist osm_rosdn_floodlightof.egg-info osm_rosdn_floodlightof*.tar.gz'
290 python3 setup.py --command-packages=stdeb.command sdist_dsc
291 sh -c 'cd deb_dist/osm-rosdn-floodlightof*/ && dpkg-buildpackage -rfakeroot -uc -us'
292 whitelist_externals = sh
293
294 #######################################################################################
295 [testenv:dist_ro_sdn_ietfl2vpn]
296 deps = {[testenv]deps}
297 -r{toxinidir}/requirements-dist.txt
298 skip_install = true
299 changedir = {toxinidir}/RO-SDN-ietfl2vpn
300 commands =
301 sh -c 'rm -rf deb_dist dist osm_rosdn_ietfl2vpn.egg-info osm_rosdn_ietfl2vpn*.tar.gz'
302 python3 setup.py --command-packages=stdeb.command sdist_dsc
303 sh -c 'cd deb_dist/osm-rosdn-ietfl2vpn*/ && dpkg-buildpackage -rfakeroot -uc -us'
304 whitelist_externals = sh
305
306 #######################################################################################
307 [testenv:dist_ro_sdn_juniper_contrail]
308 deps = {[testenv]deps}
309 -r{toxinidir}/requirements-dist.txt
310 skip_install = true
311 changedir = {toxinidir}/RO-SDN-juniper_contrail
312 commands =
313 sh -c 'rm -rf deb_dist dist osm_rosdn_juniper_contrail.egg-info osm_rosdn_juniper_contrail*.tar.gz'
314 python3 setup.py --command-packages=stdeb.command sdist_dsc
315 sh -c 'cd deb_dist/osm-rosdn-juniper-contrail*/ && dpkg-buildpackage -rfakeroot -uc -us'
316 whitelist_externals = sh
317
318 #######################################################################################
319 [testenv:dist_ro_sdn_odl_of]
320 deps = {[testenv]deps}
321 -r{toxinidir}/requirements-dist.txt
322 skip_install = true
323 changedir = {toxinidir}/RO-SDN-odl_openflow
324 commands =
325 sh -c 'rm -rf deb_dist dist osm_rosdn_odlof.egg-info osm_rosdn_odlof*.tar.gz'
326 python3 setup.py --command-packages=stdeb.command sdist_dsc
327 sh -c 'cd deb_dist/osm-rosdn-odlof*/ && dpkg-buildpackage -rfakeroot -uc -us'
328 whitelist_externals = sh
329
330 #######################################################################################
331 [testenv:dist_ro_sdn_onos_of]
332 deps = {[testenv]deps}
333 -r{toxinidir}/requirements-dist.txt
334 skip_install = true
335 changedir = {toxinidir}/RO-SDN-onos_openflow
336 commands =
337 sh -c 'rm -rf deb_dist dist osm_rosdn_onosof.egg-info osm_rosdn_onosof*.tar.gz'
338 python3 setup.py --command-packages=stdeb.command sdist_dsc
339 sh -c 'cd deb_dist/osm-rosdn-onosof*/ && dpkg-buildpackage -rfakeroot -uc -us'
340 whitelist_externals = sh
341
342 #######################################################################################
343 [testenv:dist_ro_sdn_onos_vpls]
344 deps = {[testenv]deps}
345 -r{toxinidir}/requirements-dist.txt
346 skip_install = true
347 changedir = {toxinidir}/RO-SDN-onos_vpls
348 commands =
349 sh -c 'rm -rf deb_dist dist osm_rosdn_onos_vpls.egg-info osm_rosdn_onos_vpls*.tar.gz'
350 python3 setup.py --command-packages=stdeb.command sdist_dsc
351 sh -c 'cd deb_dist/osm-rosdn-onos-vpls*/ && dpkg-buildpackage -rfakeroot -uc -us'
352 whitelist_externals = sh
353
354 #######################################################################################
355 [testenv:dist_ro_vim_aws]
356 deps = {[testenv]deps}
357 -r{toxinidir}/requirements-dist.txt
358 skip_install = true
359 changedir = {toxinidir}/RO-VIM-aws
360 commands =
361 sh -c 'rm -rf deb_dist dist osm_rovim_aws.egg-info osm_rovim_aws*.tar.gz'
362 python3 setup.py --command-packages=stdeb.command sdist_dsc
363 sh -c 'cd deb_dist/osm-rovim-aws*/ && dpkg-buildpackage -rfakeroot -uc -us'
364 whitelist_externals = sh
365
366 #######################################################################################
367 [testenv:dist_ro_vim_azure]
368 deps = {[testenv]deps}
369 -r{toxinidir}/requirements-dist.txt
370 skip_install = true
371 changedir = {toxinidir}/RO-VIM-azure
372 commands =
373 sh -c 'rm -rf deb_dist dist osm_rovim_azure.egg-info osm_rovim_azure*.tar.gz'
374 python3 setup.py --command-packages=stdeb.command sdist_dsc
375 sh -c 'cd deb_dist/osm-rovim-azure*/ && dpkg-buildpackage -rfakeroot -uc -us'
376 whitelist_externals = sh
377
378 #######################################################################################
379 [testenv:dist_ro_vim_fos]
380 deps = {[testenv]deps}
381 -r{toxinidir}/requirements-dist.txt
382 skip_install = true
383 changedir = {toxinidir}/RO-VIM-fos
384 commands =
385 sh -c 'rm -rf deb_dist dist osm_rovim_fos.egg-info osm_rovim_fos*.tar.gz'
386 python3 setup.py --command-packages=stdeb.command sdist_dsc
387 sh -c 'cd deb_dist/osm-rovim-fos*/ && dpkg-buildpackage -rfakeroot -uc -us'
388 whitelist_externals = sh
389
390 #######################################################################################
391 [testenv:dist_ro_vim_opennebula]
392 deps = {[testenv]deps}
393 -r{toxinidir}/requirements-dist.txt
394 skip_install = true
395 changedir = {toxinidir}/RO-VIM-opennebula
396 commands =
397 sh -c 'rm -rf deb_dist dist osm_rovim_opennebula.egg-info osm_rovim_opennebula*.tar.gz'
398 python3 setup.py --command-packages=stdeb.command sdist_dsc
399 sh -c 'cd deb_dist/osm-rovim-opennebula*/ && dpkg-buildpackage -rfakeroot -uc -us'
400 whitelist_externals = sh
401
402 #######################################################################################
403 [testenv:dist_ro_vim_openstack]
404 deps = {[testenv]deps}
405 -r{toxinidir}/requirements-dist.txt
406 skip_install = true
407 changedir = {toxinidir}/RO-VIM-openstack
408 commands =
409 sh -c 'rm -rf deb_dist dist osm_rovim_openstack.egg-info osm_rovim_openstack*.tar.gz'
410 python3 setup.py --command-packages=stdeb.command sdist_dsc
411 sh -c 'cd deb_dist/osm-rovim-openstack*/ && dpkg-buildpackage -rfakeroot -uc -us'
412 whitelist_externals = sh
413
414 #######################################################################################
415 [testenv:dist_ro_vim_openvim]
416 deps = {[testenv]deps}
417 -r{toxinidir}/requirements-dist.txt
418 skip_install = true
419 changedir = {toxinidir}/RO-VIM-openvim
420 commands =
421 sh -c 'rm -rf deb_dist dist osm_rovim_openvim.egg-info osm_rovim_openvim*.tar.gz'
422 python3 setup.py --command-packages=stdeb.command sdist_dsc
423 sh -c 'cd deb_dist/osm-rovim-openvim*/ && dpkg-buildpackage -rfakeroot -uc -us'
424 whitelist_externals = sh
425
426 #######################################################################################
427 [testenv:dist_ro_vim_vmware]
428 deps = {[testenv]deps}
429 -r{toxinidir}/requirements-dist.txt
430 skip_install = true
431 changedir = {toxinidir}/RO-VIM-vmware
432 commands =
433 sh -c 'rm -rf deb_dist dist osm_rovim_vmware.egg-info osm_rovim_vmware*.tar.gz'
434 python3 setup.py --command-packages=stdeb.command sdist_dsc
435 sh -c 'cd deb_dist/osm-rovim-vmware*/ && dpkg-buildpackage -rfakeroot -uc -us'
436 whitelist_externals = sh
437
438 #######################################################################################
439 [testenv:dist_ro_vim_gcp]
440 deps = {[testenv]deps}
441 -r{toxinidir}/requirements-dist.txt
442 skip_install = true
443 changedir = {toxinidir}/RO-VIM-gcp
444 commands =
445 sh -c 'rm -rf deb_dist dist osm_rovim_gcp.egg-info osm_rovim_gcp*.tar.gz'
446 python3 setup.py --command-packages=stdeb.command sdist_dsc
447 sh -c 'cd deb_dist/osm-rovim-gcp*/ && dpkg-buildpackage -rfakeroot -uc -us'
448 whitelist_externals = sh
449
450
451 #######################################################################################
452 [flake8]
453 ignore =
454 W291,
455 W293,
456 W503,
457 W605,
458 E123,
459 E125,
460 E203,
461 E226,
462 E241
463 exclude =
464 .git,
465 __pycache__,
466 .tox,
467 max-line-length = 120
468 show-source = True
469 builtins = _