b6d2c98356d0c6d933e4b1427e3f1b932b955cc8
[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
166
167 #######################################################################################
168 [testenv:pylint]
169 deps = {[testenv]deps}
170 -r{toxinidir}/requirements-dev.txt
171 -r{toxinidir}/requirements-test.txt
172 pylint
173 skip_install = true
174 commands =
175 - pylint -E NG-RO/osm_ng_ro
176 - pylint -E RO-plugin/osm_ro_plugin
177 - pylint -E RO-SDN-arista_cloudvision/osm_rosdn_arista_cloudvision
178 - pylint -E RO-SDN-dpb/osm_rosdn_dpb
179 - pylint -E RO-SDN-dynpac/osm_rosdn_dynpac
180 - pylint -E RO-SDN-floodlight_openflow/osm_rosdn_floodlightof
181 - pylint -E RO-SDN-ietfl2vpn/osm_rosdn_ietfl2vpn
182 - pylint -E RO-SDN-juniper_contrail/osm_rosdn_juniper_contrail
183 - pylint -E RO-SDN-odl_openflow/osm_rosdn_odlof
184 - pylint -E RO-SDN-onos_openflow/osm_rosdn_onosof
185 - pylint -E RO-SDN-onos_vpls/osm_rosdn_onos_vpls
186 - pylint -E RO-VIM-aws/osm_rovim_aws
187 - pylint -E RO-VIM-azure/osm_rovim_azure
188 - pylint -E RO-VIM-fos/osm_rovim_fos
189 - pylint -E RO-VIM-opennebula/osm_rovim_opennebula
190 - pylint -E RO-VIM-openstack/osm_rovim_openstack
191 - pylint -E RO-VIM-openvim/osm_rovim_openvim
192 - pylint -E RO-VIM-vmware/osm_rovim_vmware
193 - pylint -E RO-VIM-gcp/osm_rovim_gcp
194
195
196 #######################################################################################
197 [testenv:safety]
198 setenv =
199 LC_ALL=C.UTF-8
200 LANG=C.UTF-8
201 deps = {[testenv]deps}
202 safety
203 skip_install = true
204 commands =
205 - safety check --full-report
206
207
208 #######################################################################################
209 [testenv:pip-compile]
210 deps = pip-tools==5.5.0
211 skip_install = true
212 commands =
213 - sh -c "for file in requirements*.in ; do pip-compile -rU --no-header $file ;\
214 out=`echo $file | sed 's/.in/.txt/'` ; \
215 sed -i -e '1 e head -16 tox.ini' $out ;\
216 done"
217 whitelist_externals = sh
218
219
220 #######################################################################################
221 [testenv:dist_ng_ro]
222 deps = {[testenv]deps}
223 -r{toxinidir}/requirements-dist.txt
224 skip_install = true
225 changedir = {toxinidir}/NG-RO
226 commands =
227 sh -c 'rm -rf osm_ng_ro/requirements.txt deb_dist dist osm_ng_ro.egg-info osm_ng_ro*.tar.gz'
228 sh -c 'cp ../requirements.txt osm_ng_ro/requirements.txt'
229 python3 setup.py --command-packages=stdeb.command sdist_dsc
230 sh -c 'cd deb_dist/osm-ng-ro*/ && dpkg-buildpackage -rfakeroot -uc -us'
231 whitelist_externals = sh
232
233 #######################################################################################
234 [testenv:dist_ro_plugin]
235 deps = {[testenv]deps}
236 -r{toxinidir}/requirements-dist.txt
237 skip_install = true
238 changedir = {toxinidir}/RO-plugin
239 commands =
240 sh -c 'rm -rf deb_dist dist osm_ro_plugin.egg-info osm_ro_plugin*.tar.gz'
241 python3 setup.py --command-packages=stdeb.command sdist_dsc
242 sh -c 'cd deb_dist/osm-ro-plugin*/ && dpkg-buildpackage -rfakeroot -uc -us'
243 whitelist_externals = sh
244
245 #######################################################################################
246 [testenv:dist_ro_sdn_arista_cloudvision]
247 deps = {[testenv]deps}
248 -r{toxinidir}/requirements-dist.txt
249 skip_install = true
250 changedir = {toxinidir}/RO-SDN-arista_cloudvision
251 commands =
252 sh -c 'rm -rf deb_dist dist osm_rosdn_arista_cloudvision.egg-info osm_rosdn_arista_cloudvision*.tar.gz'
253 python3 setup.py --command-packages=stdeb.command sdist_dsc
254 sh -c 'cd deb_dist/osm-rosdn-arista-cloudvision*/ && dpkg-buildpackage -rfakeroot -uc -us'
255 whitelist_externals = sh
256
257 #######################################################################################
258 [testenv:dist_ro_sdn_dpb]
259 deps = {[testenv]deps}
260 -r{toxinidir}/requirements-dist.txt
261 skip_install = true
262 changedir = {toxinidir}/RO-SDN-dpb
263 commands =
264 sh -c 'rm -rf deb_dist dist osm_rosdn_dpb.egg-info osm_rosdn_dpb*.tar.gz'
265 python3 setup.py --command-packages=stdeb.command sdist_dsc
266 sh -c 'cd deb_dist/osm-rosdn-dpb*/ && dpkg-buildpackage -rfakeroot -uc -us'
267 whitelist_externals = sh
268
269 #######################################################################################
270 [testenv:dist_ro_sdn_dynpac]
271 deps = {[testenv]deps}
272 -r{toxinidir}/requirements-dist.txt
273 skip_install = true
274 changedir = {toxinidir}/RO-SDN-dynpac
275 commands =
276 sh -c 'rm -rf deb_dist dist osm_rosdn_dynpac.egg-info osm_rosdn_dynpac*.tar.gz'
277 python3 setup.py --command-packages=stdeb.command sdist_dsc
278 sh -c 'cd deb_dist/osm-rosdn-dynpac*/ && dpkg-buildpackage -rfakeroot -uc -us'
279 whitelist_externals = sh
280
281 #######################################################################################
282 [testenv:dist_ro_sdn_floodlight_of]
283 deps = {[testenv]deps}
284 -r{toxinidir}/requirements-dist.txt
285 skip_install = true
286 changedir = {toxinidir}/RO-SDN-floodlight_openflow
287 commands =
288 sh -c 'rm -rf deb_dist dist osm_rosdn_floodlightof.egg-info osm_rosdn_floodlightof*.tar.gz'
289 python3 setup.py --command-packages=stdeb.command sdist_dsc
290 sh -c 'cd deb_dist/osm-rosdn-floodlightof*/ && dpkg-buildpackage -rfakeroot -uc -us'
291 whitelist_externals = sh
292
293 #######################################################################################
294 [testenv:dist_ro_sdn_ietfl2vpn]
295 deps = {[testenv]deps}
296 -r{toxinidir}/requirements-dist.txt
297 skip_install = true
298 changedir = {toxinidir}/RO-SDN-ietfl2vpn
299 commands =
300 sh -c 'rm -rf deb_dist dist osm_rosdn_ietfl2vpn.egg-info osm_rosdn_ietfl2vpn*.tar.gz'
301 python3 setup.py --command-packages=stdeb.command sdist_dsc
302 sh -c 'cd deb_dist/osm-rosdn-ietfl2vpn*/ && dpkg-buildpackage -rfakeroot -uc -us'
303 whitelist_externals = sh
304
305 #######################################################################################
306 [testenv:dist_ro_sdn_juniper_contrail]
307 deps = {[testenv]deps}
308 -r{toxinidir}/requirements-dist.txt
309 skip_install = true
310 changedir = {toxinidir}/RO-SDN-juniper_contrail
311 commands =
312 sh -c 'rm -rf deb_dist dist osm_rosdn_juniper_contrail.egg-info osm_rosdn_juniper_contrail*.tar.gz'
313 python3 setup.py --command-packages=stdeb.command sdist_dsc
314 sh -c 'cd deb_dist/osm-rosdn-juniper-contrail*/ && dpkg-buildpackage -rfakeroot -uc -us'
315 whitelist_externals = sh
316
317 #######################################################################################
318 [testenv:dist_ro_sdn_odl_of]
319 deps = {[testenv]deps}
320 -r{toxinidir}/requirements-dist.txt
321 skip_install = true
322 changedir = {toxinidir}/RO-SDN-odl_openflow
323 commands =
324 sh -c 'rm -rf deb_dist dist osm_rosdn_odlof.egg-info osm_rosdn_odlof*.tar.gz'
325 python3 setup.py --command-packages=stdeb.command sdist_dsc
326 sh -c 'cd deb_dist/osm-rosdn-odlof*/ && dpkg-buildpackage -rfakeroot -uc -us'
327 whitelist_externals = sh
328
329 #######################################################################################
330 [testenv:dist_ro_sdn_onos_of]
331 deps = {[testenv]deps}
332 -r{toxinidir}/requirements-dist.txt
333 skip_install = true
334 changedir = {toxinidir}/RO-SDN-onos_openflow
335 commands =
336 sh -c 'rm -rf deb_dist dist osm_rosdn_onosof.egg-info osm_rosdn_onosof*.tar.gz'
337 python3 setup.py --command-packages=stdeb.command sdist_dsc
338 sh -c 'cd deb_dist/osm-rosdn-onosof*/ && dpkg-buildpackage -rfakeroot -uc -us'
339 whitelist_externals = sh
340
341 #######################################################################################
342 [testenv:dist_ro_sdn_onos_vpls]
343 deps = {[testenv]deps}
344 -r{toxinidir}/requirements-dist.txt
345 skip_install = true
346 changedir = {toxinidir}/RO-SDN-onos_vpls
347 commands =
348 sh -c 'rm -rf deb_dist dist osm_rosdn_onos_vpls.egg-info osm_rosdn_onos_vpls*.tar.gz'
349 python3 setup.py --command-packages=stdeb.command sdist_dsc
350 sh -c 'cd deb_dist/osm-rosdn-onos-vpls*/ && dpkg-buildpackage -rfakeroot -uc -us'
351 whitelist_externals = sh
352
353 #######################################################################################
354 [testenv:dist_ro_vim_aws]
355 deps = {[testenv]deps}
356 -r{toxinidir}/requirements-dist.txt
357 skip_install = true
358 changedir = {toxinidir}/RO-VIM-aws
359 commands =
360 sh -c 'rm -rf deb_dist dist osm_rovim_aws.egg-info osm_rovim_aws*.tar.gz'
361 python3 setup.py --command-packages=stdeb.command sdist_dsc
362 sh -c 'cd deb_dist/osm-rovim-aws*/ && dpkg-buildpackage -rfakeroot -uc -us'
363 whitelist_externals = sh
364
365 #######################################################################################
366 [testenv:dist_ro_vim_azure]
367 deps = {[testenv]deps}
368 -r{toxinidir}/requirements-dist.txt
369 skip_install = true
370 changedir = {toxinidir}/RO-VIM-azure
371 commands =
372 sh -c 'rm -rf deb_dist dist osm_rovim_azure.egg-info osm_rovim_azure*.tar.gz'
373 python3 setup.py --command-packages=stdeb.command sdist_dsc
374 sh -c 'cd deb_dist/osm-rovim-azure*/ && dpkg-buildpackage -rfakeroot -uc -us'
375 whitelist_externals = sh
376
377 #######################################################################################
378 [testenv:dist_ro_vim_fos]
379 deps = {[testenv]deps}
380 -r{toxinidir}/requirements-dist.txt
381 skip_install = true
382 changedir = {toxinidir}/RO-VIM-fos
383 commands =
384 sh -c 'rm -rf deb_dist dist osm_rovim_fos.egg-info osm_rovim_fos*.tar.gz'
385 python3 setup.py --command-packages=stdeb.command sdist_dsc
386 sh -c 'cd deb_dist/osm-rovim-fos*/ && dpkg-buildpackage -rfakeroot -uc -us'
387 whitelist_externals = sh
388
389 #######################################################################################
390 [testenv:dist_ro_vim_opennebula]
391 deps = {[testenv]deps}
392 -r{toxinidir}/requirements-dist.txt
393 skip_install = true
394 changedir = {toxinidir}/RO-VIM-opennebula
395 commands =
396 sh -c 'rm -rf deb_dist dist osm_rovim_opennebula.egg-info osm_rovim_opennebula*.tar.gz'
397 python3 setup.py --command-packages=stdeb.command sdist_dsc
398 sh -c 'cd deb_dist/osm-rovim-opennebula*/ && dpkg-buildpackage -rfakeroot -uc -us'
399 whitelist_externals = sh
400
401 #######################################################################################
402 [testenv:dist_ro_vim_openstack]
403 deps = {[testenv]deps}
404 -r{toxinidir}/requirements-dist.txt
405 skip_install = true
406 changedir = {toxinidir}/RO-VIM-openstack
407 commands =
408 sh -c 'rm -rf deb_dist dist osm_rovim_openstack.egg-info osm_rovim_openstack*.tar.gz'
409 python3 setup.py --command-packages=stdeb.command sdist_dsc
410 sh -c 'cd deb_dist/osm-rovim-openstack*/ && dpkg-buildpackage -rfakeroot -uc -us'
411 whitelist_externals = sh
412
413 #######################################################################################
414 [testenv:dist_ro_vim_openvim]
415 deps = {[testenv]deps}
416 -r{toxinidir}/requirements-dist.txt
417 skip_install = true
418 changedir = {toxinidir}/RO-VIM-openvim
419 commands =
420 sh -c 'rm -rf deb_dist dist osm_rovim_openvim.egg-info osm_rovim_openvim*.tar.gz'
421 python3 setup.py --command-packages=stdeb.command sdist_dsc
422 sh -c 'cd deb_dist/osm-rovim-openvim*/ && dpkg-buildpackage -rfakeroot -uc -us'
423 whitelist_externals = sh
424
425 #######################################################################################
426 [testenv:dist_ro_vim_vmware]
427 deps = {[testenv]deps}
428 -r{toxinidir}/requirements-dist.txt
429 skip_install = true
430 changedir = {toxinidir}/RO-VIM-vmware
431 commands =
432 sh -c 'rm -rf deb_dist dist osm_rovim_vmware.egg-info osm_rovim_vmware*.tar.gz'
433 python3 setup.py --command-packages=stdeb.command sdist_dsc
434 sh -c 'cd deb_dist/osm-rovim-vmware*/ && dpkg-buildpackage -rfakeroot -uc -us'
435 whitelist_externals = sh
436
437 #######################################################################################
438 [testenv:dist_ro_vim_gcp]
439 deps = {[testenv]deps}
440 -r{toxinidir}/requirements-dist.txt
441 skip_install = true
442 changedir = {toxinidir}/RO-VIM-gcp
443 commands =
444 sh -c 'rm -rf deb_dist dist osm_rovim_gcp.egg-info osm_rovim_gcp*.tar.gz'
445 python3 setup.py --command-packages=stdeb.command sdist_dsc
446 sh -c 'cd deb_dist/osm-rovim-gcp*/ && dpkg-buildpackage -rfakeroot -uc -us'
447 whitelist_externals = sh
448
449
450 #######################################################################################
451 [flake8]
452 ignore =
453 W291,
454 W293,
455 W503,
456 W605,
457 E123,
458 E125,
459 E203,
460 E226,
461 E241
462 exclude =
463 .git,
464 __pycache__,
465 .tox,
466 max-line-length = 120
467 show-source = True
468 builtins = _