@pbauer Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.linkintegrity/88/violations
```
plone/app/linkintegrity/testing.py:61:9: D001 found xmlconfig.file( replace it with self.loadZCML(
plone/app/linkintegrity/testing.py:146:50: C812 missing trailing comma
plone/app/linkintegrity/testing.py:151:49: C812 missing trailing comma
plone/app/linkintegrity/testing.py:157:54: C812 missing trailing comma
plone/app/linkintegrity/testing.py:162:53: C812 missing trailing comma
plone/app/linkintegrity/handlers.py:28:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/handlers.py:32:1: C901 'findObject' is too complex (12)
plone/app/linkintegrity/handlers.py:123:5: T000 Todo note found.
plone/app/linkintegrity/utils.py:8:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/utils.py:15:42: C812 missing trailing comma
plone/app/linkintegrity/utils.py:42:42: C812 missing trailing comma
plone/app/linkintegrity/parser.py:3:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/upgrades.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/upgrades.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/upgrades.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/upgrades.py:8:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/upgrades.py:8:25: Q000 Remove bad quotes.
plone/app/linkintegrity/upgrades.py:16:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/upgrades.py:16:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/upgrades.py:16:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/browser/info.py:15:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/browser/info.py:43:5: C901 'DeleteConfirmationInfo.get_breaches' is too complex (16)
plone/app/linkintegrity/browser/info.py:83:45: C812 missing trailing comma
plone/app/linkintegrity/browser/info.py:87:38: C812 missing trailing comma
plone/app/linkintegrity/browser/info.py:91:45: C812 missing trailing comma
plone/app/linkintegrity/browser/info.py:97:37: C812 missing trailing comma
plone/app/linkintegrity/browser/update.py:14:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/browser/update.py:14:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/browser/update.py:65:16: S001 found module formatter
plone/app/linkintegrity/tests/test_handlers.py:38:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/linkintegrity/tests/test_upgrade.py:5:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/test_upgrade.py:5:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/test_upgrade.py:5:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/test_upgrade.py:11:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_imagescales.py:69:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/linkintegrity/tests/test_references.py:65:11: T000 Todo note found.
plone/app/linkintegrity/tests/test_references.py:88:23: C812 missing trailing comma
plone/app/linkintegrity/tests/test_references.py:102:23: C812 missing trailing comma
plone/app/linkintegrity/tests/test_references.py:207:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/linkintegrity/tests/test_functional.py:59:11: T000 Todo note found.
plone/app/linkintegrity/tests/test_functional.py:149:65: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:150:14: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:213:59: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:214:14: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:296:59: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:297:14: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:304:34: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:308:34: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:336:65: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:337:14: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:342:34: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:375:65: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:376:14: C812 missing trailing comma
plone/app/linkintegrity/tests/test_circular.py:90:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/linkintegrity/tests/test_circular.py:92:5: E301 expected 1 blank line, found 0
plone/app/linkintegrity/tests/test_circular.py:92:80: E501 line too long (83 > 79 characters)
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@mauritsvanrees Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.linkintegrity/89/violations
```
plone/app/linkintegrity/handlers.py:28:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/handlers.py:32:1: C901 'findObject' is too complex (12)
plone/app/linkintegrity/handlers.py:123:5: T000 Todo note found.
plone/app/linkintegrity/parser.py:3:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/testing.py:61:9: D001 found xmlconfig.file( replace it with self.loadZCML(
plone/app/linkintegrity/testing.py:146:50: C812 missing trailing comma
plone/app/linkintegrity/testing.py:151:49: C812 missing trailing comma
plone/app/linkintegrity/testing.py:157:54: C812 missing trailing comma
plone/app/linkintegrity/testing.py:162:53: C812 missing trailing comma
plone/app/linkintegrity/upgrades.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/upgrades.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/upgrades.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/upgrades.py:8:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/upgrades.py:8:25: Q000 Remove bad quotes.
plone/app/linkintegrity/upgrades.py:16:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/upgrades.py:16:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/upgrades.py:16:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/utils.py:8:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/utils.py:15:42: C812 missing trailing comma
plone/app/linkintegrity/utils.py:42:42: C812 missing trailing comma
plone/app/linkintegrity/browser/info.py:15:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/browser/info.py:43:5: C901 'DeleteConfirmationInfo.get_breaches' is too complex (16)
plone/app/linkintegrity/browser/info.py:83:45: C812 missing trailing comma
plone/app/linkintegrity/browser/info.py:87:38: C812 missing trailing comma
plone/app/linkintegrity/browser/info.py:91:45: C812 missing trailing comma
plone/app/linkintegrity/browser/info.py:97:37: C812 missing trailing comma
plone/app/linkintegrity/browser/update.py:14:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/browser/update.py:14:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/browser/update.py:65:16: S001 found module formatter
plone/app/linkintegrity/tests/test_circular.py:90:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/linkintegrity/tests/test_circular.py:92:5: E301 expected 1 blank line, found 0
plone/app/linkintegrity/tests/test_circular.py:92:80: E501 line too long (83 > 79 characters)
plone/app/linkintegrity/tests/test_functional.py:59:11: T000 Todo note found.
plone/app/linkintegrity/tests/test_functional.py:149:65: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:150:14: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:213:59: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:214:14: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:296:59: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:297:14: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:304:34: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:308:34: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:336:65: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:337:14: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:342:34: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:375:65: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:376:14: C812 missing trailing comma
plone/app/linkintegrity/tests/test_handlers.py:38:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/linkintegrity/tests/test_imagescales.py:69:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/linkintegrity/tests/test_references.py:65:11: T000 Todo note found.
plone/app/linkintegrity/tests/test_references.py:88:23: C812 missing trailing comma
plone/app/linkintegrity/tests/test_references.py:102:23: C812 missing trailing comma
plone/app/linkintegrity/tests/test_references.py:207:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/linkintegrity/tests/test_upgrade.py:5:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/test_upgrade.py:5:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/test_upgrade.py:5:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/test_upgrade.py:11:1: I001 isort found an import in the wrong position
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


Collaborator: Review for this commit was created. [Link to review](http://217.170.125.19:40101/ui#review:id=5)


No, you do not need to set the milli /microseconds. Does menu7 get set back to false or does it stay true?

SetTimer and Timer should be in two separate if statements as one should only be called when rotate the encoder.

- Andrew

Sent from my iPhone

> On Feb 6, 2019, at 8:53 AM, BastiaanMDC <notifications@github.com> wrote:
>
> ok I have tried that today, and did the following:
>
> if(Menu7==True)
> {
>
> delay(100);
> T.SetTimer(Hours,Minutes,Seconds);
> delay(100);
> T.Timer();
> }
>
> for instance I get for the given Timestamp in the SetTimer the following:
> for 8Minutes,13seconds,Milliseconds(random value I suppose) and Microseconds as well
>
> 0:8:13:349343:349342776
> 0:8:13:350640:350639329
> 0:8:13:351936:351935809
> 0:8:13:353233:353232273
> 0:8:13:354529:354528772
> 0:8:13:355826:355825248
> 0:8:13:357122:357121709
> 0:8:13:358419:358418170
> 0:8:13:359715:359714661
> 0:8:13:361012:361011112
>
> I suppose I have to set the milliseconds and microseconds as well=?
> —
> You are receiving this because you commented.
> Reply to this email directly, view it on GitHub, or mute the thread.


@mauritsvanrees Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.users/79/violations
```
plone/app/users/schema.py:22:21: Q000 Remove bad quotes.
plone/app/users/schema.py:24:16: Q000 Remove bad quotes.
plone/app/users/schema.py:34:11: T000 Todo note found.
plone/app/users/schema.py:78:31: Q000 Remove bad quotes.
plone/app/users/schema.py:97:21: Q000 Remove bad quotes.
plone/app/users/schema.py:98:21: Q000 Remove bad quotes.
plone/app/users/schema.py:99:21: Q000 Remove bad quotes.
plone/app/users/schema.py:99:76: C812 missing trailing comma
plone/app/users/schema.py:100:10: C812 missing trailing comma
plone/app/users/schema.py:112:31: Q000 Remove bad quotes.
plone/app/users/schema.py:113:23: Q000 Remove bad quotes.
plone/app/users/schema.py:117:25: Q000 Remove bad quotes.
plone/app/users/schema.py:118:17: Q000 Remove bad quotes.
plone/app/users/schema.py:158:16: S001 found module formatter
plone/app/users/schema.py:172:48: C812 missing trailing comma
plone/app/users/schema.py:175:13: Q000 Remove bad quotes.
plone/app/users/schema.py:176:22: Q000 Remove bad quotes.
plone/app/users/schema.py:177:22: Q000 Remove bad quotes.
plone/app/users/schema.py:178:22: Q000 Remove bad quotes.
plone/app/users/schema.py:179:22: Q000 Remove bad quotes.
plone/app/users/schema.py:180:22: Q000 Remove bad quotes.
plone/app/users/schema.py:181:22: Q000 Remove bad quotes.
plone/app/users/vocabularies.py:3:1: I001 isort found an import in the wrong position
plone/app/users/vocabularies.py:43:80: E501 line too long (130 > 79 characters)
plone/app/users/vocabularies.py:117:25: S001 found module formatter
plone/app/users/field_extender.py:29:15: Q000 Remove bad quotes.
plone/app/users/field_extender.py:30:21: Q000 Remove bad quotes.
plone/app/users/field_extender.py:45:5: D001 found adapts( replace it with zope.component.adapter
plone/app/users/field_extender.py:74:56: Q000 Remove bad quotes.
plone/app/users/utils.py:22:65: C812 missing trailing comma
plone/app/users/utils.py:23:10: C812 missing trailing comma
plone/app/users/setuphandlers.py:7:1: I003 isort expected 1 blank line in imports, found 0
plone/app/users/upgrades.py:17:25: Q000 Remove bad quotes.
plone/app/users/upgrades.py:40:31: Q000 Remove bad quotes.
plone/app/users/upgrades.py:41:23: Q000 Remove bad quotes.
plone/app/users/upgrades.py:52:31: Q000 Remove bad quotes.
plone/app/users/upgrades.py:53:23: Q000 Remove bad quotes.
plone/app/users/upgrades.py:54:23: Q000 Remove bad quotes.
plone/app/users/upgrades.py:65:31: Q000 Remove bad quotes.
plone/app/users/upgrades.py:66:23: Q000 Remove bad quotes.
plone/app/users/upgrades.py:67:23: Q000 Remove bad quotes.
plone/app/users/upgrades.py:81:72: C812 missing trailing comma
plone/app/users/upgrades.py:98:33: Q000 Remove bad quotes.
plone/app/users/upgrades.py:114:9: E128 continuation line under-indented for visual indent
plone/app/users/upgrades.py:115:20: C812 missing trailing comma
plone/app/users/browser/account.py:31:16: Q000 Remove bad quotes.
plone/app/users/browser/account.py:32:16: Q000 Remove bad quotes.
plone/app/users/browser/account.py:36:16: Q000 Remove bad quotes.
plone/app/users/browser/account.py:37:16: Q000 Remove bad quotes.
plone/app/users/browser/account.py:38:16: Q000 Remove bad quotes.
plone/app/users/browser/account.py:77:44: C812 missing trailing comma
plone/app/users/browser/account.py:91:39: P002 found "hasattr", consider replacing it
plone/app/users/browser/account.py:138:24: Q000 Remove bad quotes.
plone/app/users/browser/account.py:139:26: Q000 Remove bad quotes.
plone/app/users/browser/account.py:170:20: P101 format string does contain unindexed parameters
plone/app/users/browser/account.py:187:41: Q000 Remove bad quotes.
plone/app/users/browser/account.py:232:57: Q000 Remove bad quotes.
plone/app/users/browser/account.py:233:60: Q000 Remove bad quotes.
plone/app/users/browser/account.py:235:13: S001 found module formatter
plone/app/users/browser/account.py:235:68: C812 missing trailing comma
plone/app/users/browser/membersearch.py:18:46: C812 missing trailing comma
plone/app/users/browser/register.py:53:41: C812 missing trailing comma
plone/app/users/browser/register.py:63:13: Q000 Remove bad quotes.
plone/app/users/browser/register.py:64:19: Q000 Remove bad quotes.
plone/app/users/browser/register.py:79:62: Q000 Remove bad quotes.
plone/app/users/browser/register.py:100:59: Q000 Remove bad quotes.
plone/app/users/browser/register.py:101:17: Q000 Remove bad quotes.
plone/app/users/browser/register.py:102:17: Q000 Remove bad quotes.
plone/app/users/browser/register.py:103:17: Q000 Remove bad quotes.
plone/app/users/browser/register.py:108:25: Q000 Remove bad quotes.
plone/app/users/browser/register.py:109:25: Q000 Remove bad quotes.
plone/app/users/browser/register.py:110:25: Q000 Remove bad quotes.
plone/app/users/browser/register.py:111:25: Q000 Remove bad quotes.
plone/app/users/browser/register.py:111:50: C812 missing trailing comma
plone/app/users/browser/register.py:125:49: C812 missing trailing comma
plone/app/users/browser/register.py:129:5: C901 'BaseRegistrationForm.generate_user_id' is too complex (12)
plone/app/users/browser/register.py:206:12: P002 found "hasattr", consider replacing it
plone/app/users/browser/register.py:217:22: Q000 Remove bad quotes.
plone/app/users/browser/register.py:217:22: S001 found module formatter
plone/app/users/browser/register.py:276:5: C901 'BaseRegistrationForm.validate_registration' is too complex (17)
plone/app/users/browser/register.py:352:29: Q000 Remove bad quotes.
plone/app/users/browser/register.py:353:29: Q000 Remove bad quotes.
plone/app/users/browser/register.py:360:29: Q000 Remove bad quotes.
plone/app/users/browser/register.py:361:29: Q000 Remove bad quotes.
plone/app/users/browser/register.py:371:29: Q000 Remove bad quotes.
plone/app/users/browser/register.py:372:29: Q000 Remove bad quotes.
plone/app/users/browser/register.py:380:37: Q000 Remove bad quotes.
plone/app/users/browser/register.py:381:29: Q000 Remove bad quotes.
plone/app/users/browser/register.py:388:67: C812 missing trailing comma
plone/app/users/browser/register.py:404:11: T000 Todo note found.
plone/app/users/browser/register.py:413:5: C901 'BaseRegistrationForm.handle_join_success' is too complex (13)
plone/app/users/browser/register.py:450:69: Q000 Remove bad quotes.
plone/app/users/browser/register.py:493:35: Q000 Remove bad quotes.
plone/app/users/browser/register.py:494:27: Q000 Remove bad quotes.
plone/app/users/browser/register.py:495:27: Q000 Remove bad quotes.
plone/app/users/browser/register.py:504:35: Q000 Remove bad quotes.
plone/app/users/browser/register.py:505:27: Q000 Remove bad quotes.
plone/app/users/browser/register.py:506:27: Q000 Remove bad quotes.
plone/app/users/browser/register.py:549:19: Q000 Remove bad quotes.
plone/app/users/browser/register.py:607:25: Q000 Remove bad quotes.
plone/app/users/browser/register.py:608:25: Q000 Remove bad quotes.
plone/app/users/browser/register.py:609:25: Q000 Remove bad quotes.
plone/app/users/browser/register.py:610:25: Q000 Remove bad quotes.
plone/app/users/browser/register.py:617:19: Q000 Remove bad quotes.
plone/app/users/browser/register.py:658:65: C812 missing trailing comma
plone/app/users/browser/register.py:667:25: Q000 Remove bad quotes.
plone/app/users/browser/register.py:668:25: Q000 Remove bad quotes.
plone/app/users/browser/register.py:669:25: Q000 Remove bad quotes.
plone/app/users/browser/register.py:670:25: Q000 Remove bad quotes.
plone/app/users/browser/register.py:670:79: C812 missing trailing comma
plone/app/users/browser/register.py:676:67: C812 missing trailing comma
plone/app/users/browser/register.py:706:69: Q000 Remove bad quotes.
plone/app/users/browser/register.py:710:15: Q000 Remove bad quotes.
plone/app/users/browser/personalpreferences.py:34:46: C812 missing trailing comma
plone/app/users/browser/personalpreferences.py:36:20: Q000 Remove bad quotes.
plone/app/users/browser/personalpreferences.py:43:20: Q000 Remove bad quotes.
plone/app/users/browser/personalpreferences.py:44:23: C812 missing trailing comma
plone/app/users/browser/personalpreferences.py:82:41: C812 missing trailing comma
plone/app/users/browser/personalpreferences.py:88:50: C812 missing trailing comma
plone/app/users/browser/personalpreferences.py:95:13: Q000 Remove bad quotes.
plone/app/users/browser/personalpreferences.py:96:13: Q000 Remove bad quotes.
plone/app/users/browser/personalpreferences.py:96:47: C812 missing trailing comma
plone/app/users/browser/personalpreferences.py:99:13: Q000 Remove bad quotes.
plone/app/users/browser/personalpreferences.py:100:13: Q000 Remove bad quotes.
plone/app/users/browser/personalpreferences.py:100:32: C812 missing trailing comma
plone/app/users/browser/registersettingspanel.py:15:15: Q000 Remove bad quotes.
plone/app/users/browser/registersettingspanel.py:16:21: Q000 Remove bad quotes.
plone/app/users/browser/registersettingspanel.py:17:19: Q000 Remove bad quotes.
plone/app/users/browser/registersettingspanel.py:33:20: C812 missing trailing comma
plone/app/users/browser/registersettingspanel.py:51:49: C812 missing trailing comma
plone/app/users/browser/registersettingspanel.py:53:21: Q000 Remove bad quotes.
plone/app/users/browser/registersettingspanel.py:55:21: Q000 Remove bad quotes.
plone/app/users/browser/registersettingspanel.py:56:65: Q000 Remove bad quotes.
plone/app/users/browser/passwordpanel.py:30:21: Q000 Remove bad quotes.
plone/app/users/browser/passwordpanel.py:37:21: Q000 Remove bad quotes.
plone/app/users/browser/passwordpanel.py:38:13: Q000 Remove bad quotes.
plone/app/users/browser/passwordpanel.py:61:21: Q000 Remove bad quotes.
plone/app/users/browser/passwordpanel.py:76:45: C812 missing trailing comma
plone/app/users/browser/passwordpanel.py:93:29: Q000 Remove bad quotes.
plone/app/users/browser/passwordpanel.py:113:28: C812 missing trailing comma
plone/app/users/browser/passwordpanel.py:139:38: Q000 Remove bad quotes.
plone/app/users/browser/passwordpanel.py:139:45: C812 missing trailing comma
plone/app/users/browser/passwordpanel.py:144:15: Q000 Remove bad quotes.
plone/app/users/browser/passwordpanel.py:144:41: Q000 Remove bad quotes.
plone/app/users/browser/passwordpanel.py:144:47: C812 missing trailing comma
plone/app/users/browser/schemaeditor.py:49:5: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:50:5: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:51:5: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:52:5: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:53:5: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:54:5: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:55:5: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:56:5: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:57:5: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:58:5: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:59:5: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:60:5: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:61:5: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:98:15: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:111:21: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:139:30: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:146:17: S001 found module formatter
plone/app/users/browser/schemaeditor.py:220:33: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:225:28: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:226:31: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:229:17: B901 blind except: statement
plone/app/users/browser/schemaeditor.py:232:26: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:233:26: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:238:31: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:238:46: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:240:21: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:240:21: S001 found module formatter
plone/app/users/browser/schemaeditor.py:242:21: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:242:21: S001 found module formatter
plone/app/users/browser/schemaeditor.py:251:25: Q000 Remove bad quotes.
plone/app/users/browser/schemaeditor.py:251:25: S001 found module formatter
plone/app/users/browser/schemaeditor.py:302:19: C812 missing trailing comma
plone/app/users/browser/schemaeditor.py:312:19: C812 missing trailing comma
plone/app/users/browser/userdatapanel.py:46:37: Q000 Remove bad quotes.
plone/app/users/browser/userdatapanel.py:78:53: C812 missing trailing comma
plone/app/users/browser/userdatapanel.py:84:59: C812 missing trailing comma
plone/app/users/browser/userdatapanel.py:103:41: C812 missing trailing comma
plone/app/users/tests/base.py:11:1: F401 'plone.app.testing.setRoles' imported but unused
plone/app/users/tests/base.py:12:1: I001 isort found an import in the wrong position
plone/app/users/tests/base.py:72:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
plone/app/users/tests/base.py:132:58: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:5:1: F401 'plone.app.users.testing.PLONE_APP_USERS_FUNCTIONAL_TESTING' imported but unused
plone/app/users/tests/test_exportimport.py:18:80: E501 line too long (438 > 79 characters)
plone/app/users/tests/test_exportimport.py:20:80: E501 line too long (81 > 79 characters)
plone/app/users/tests/test_exportimport.py:27:80: E501 line too long (84 > 79 characters)
plone/app/users/tests/test_exportimport.py:35:80: E501 line too long (85 > 79 characters)
plone/app/users/tests/test_exportimport.py:43:80: E501 line too long (101 > 79 characters)
plone/app/users/tests/test_exportimport.py:52:80: E501 line too long (82 > 79 characters)
plone/app/users/tests/test_exportimport.py:57:80: E501 line too long (89 > 79 characters)
plone/app/users/tests/test_exportimport.py:67:80: E501 line too long (85 > 79 characters)
plone/app/users/tests/test_exportimport.py:93:80: E501 line too long (83 > 79 characters)
plone/app/users/tests/test_exportimport.py:107:41: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:110:23: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:112:23: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:115:23: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:117:23: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:120:23: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:122:23: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:125:23: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:129:26: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:131:23: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:133:23: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:136:23: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:137:80: E501 line too long (81 > 79 characters)
plone/app/users/tests/test_exportimport.py:138:23: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:141:23: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:143:23: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:146:23: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:148:23: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:151:23: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:153:23: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:156:23: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:158:23: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:161:23: Q000 Remove bad quotes.
plone/app/users/tests/test_exportimport.py:163:23: Q000 Remove bad quotes.
plone/app/users/tests/test_pam.py:7:1: I001 isort found an import in the wrong position
plone/app/users/tests/test_pam.py:9:1: F401 'plone.app.users.browser.userdatapanel.UserDataPanel' imported but unused
plone/app/users/tests/test_pam.py:10:1: F401 'plone.app.users.testing.PLONE_APP_USERS_FUNCTIONAL_TESTING' imported but unused
plone/app/users/tests/test_pam.py:13:1: F401 'transaction.commit' imported but unused
plone/app/users/tests/test_pam.py:14:1: F401 'zExceptions.NotFound' imported but unused
plone/app/users/tests/test_pam.py:15:1: F401 'zope.i18n.translate' imported but unused
plone/app/users/tests/test_pam.py:37:10: Q000 Remove bad quotes.
plone/app/users/tests/test_pam.py:46:44: S001 found module formatter
plone/app/users/tests/test_pam.py:46:80: E501 line too long (96 > 79 characters)
plone/app/users/tests/test_pam.py:48:80: E501 line too long (100 > 79 characters)
plone/app/users/tests/test_new_user.py:13:62: C812 missing trailing comma
plone/app/users/tests/test_new_user.py:30:68: C812 missing trailing comma
plone/app/users/tests/test_new_user.py:43:62: C812 missing trailing comma
plone/app/users/tests/test_new_user.py:64:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_new_user.py:66:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_new_user.py:67:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_new_user.py:84:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_new_user.py:85:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_new_user.py:87:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_new_user.py:88:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_new_user.py:104:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_new_user.py:105:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_new_user.py:107:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_new_user.py:108:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_new_user.py:126:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_new_user.py:127:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_new_user.py:129:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_new_user.py:130:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_new_user.py:148:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_new_user.py:150:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_new_user.py:154:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_new_user.py:172:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_new_user.py:173:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_new_user.py:175:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_new_user.py:179:14: D001 found assertEquals( replace it with assertEqual
plone/app/users/tests/test_schema_types.py:7:1: F401 'plone.app.users.testing.PLONE_APP_USERS_FUNCTIONAL_TESTING' imported but unused
plone/app/users/tests/test_schema_types.py:10:1: I001 isort found an import in the wrong position
plone/app/users/tests/test_schema_types.py:19:80: E501 line too long (438 > 79 characters)
plone/app/users/tests/test_schema_types.py:21:80: E501 line too long (81 > 79 characters)
plone/app/users/tests/test_schema_types.py:28:80: E501 line too long (84 > 79 characters)
plone/app/users/tests/test_schema_types.py:36:80: E501 line too long (85 > 79 characters)
plone/app/users/tests/test_schema_types.py:44:80: E501 line too long (101 > 79 characters)
plone/app/users/tests/test_schema_types.py:53:80: E501 line too long (82 > 79 characters)
plone/app/users/tests/test_schema_types.py:58:80: E501 line too long (89 > 79 characters)
plone/app/users/tests/test_schema_types.py:68:80: E501 line too long (85 > 79 characters)
plone/app/users/tests/test_schema_types.py:94:80: E501 line too long (83 > 79 characters)
plone/app/users/tests/test_schema_types.py:116:27: Q000 Remove bad quotes.
plone/app/users/tests/test_schema_types.py:122:41: Q000 Remove bad quotes.
plone/app/users/tests/test_schema_types.py:122:80: E501 line too long (80 > 79 characters)
plone/app/users/tests/test_schema_types.py:123:80: E501 line too long (116 > 79 characters)
plone/app/users/tests/test_schema_types.py:123:87: Q000 Remove bad quotes.
plone/app/users/tests/test_schema_types.py:123:100: Q000 Remove bad quotes.
plone/app/users/tests/test_schema_types.py:143:80: E501 line too long (84 > 79 characters)
plone/app/users/tests/test_doctests.py:36:80: E501 line too long (86 > 79 characters)
plone/app/users/tests/test_user_data_panel.py:2:1: F401 'plone.app.testing.applyProfile' imported but unused
plone/app/users/tests/test_user_data_panel.py:4:1: F401 'plone.app.users.testing.PLONE_APP_USERS_FUNCTIONAL_TESTING' imported but unused
plone/app/users/tests/test_user_data_panel.py:16:30: C812 missing trailing comma
plone/app/users/tests/test_user_data_panel.py:28:62: C812 missing trailing comma
plone/app/users/tests/test_account.py:2:1: I001 isort found an import in the wrong position
plone/app/users/tests/test_account.py:4:1: F401 'plone.app.users.tests.base.BaseTestCase' imported but unused
plone/app/users/tests/test_account.py:7:1: I001 isort found an import in the wrong position
plone/app/users/tests/test_account.py:8:1: I003 isort expected 1 blank line in imports, found 0
plone/app/users/tests/test_robot.py:2:1: F401 'plone.app.users.testing.PLONE_APP_USERS_ACCEPTANCE_TESTING' imported but unused
plone/app/users/tests/test_robot.py:3:1: F401 'plone.testing.layered' imported but unused
plone/app/users/tests/test_robot.py:6:1: F401 'robotsuite' imported but unused
plone/app/users/tests/test_robot.py:13:53: Q000 Remove bad quotes.
plone/app/users/tests/test_robot.py:14:9: F841 local variable 'testfilepath' is assigned to but never used
plone/app/users/tests/test_robot.py:14:37: Q000 Remove bad quotes.
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@rockyburt Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.vocabularies/58/violations
```
plone/__init__.py:0:1: C101 Coding magic comment not found
plone/app/__init__.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/groups.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/groups.py:1:1: F401 'itertools' imported but unused
plone/app/vocabularies/groups.py:1:1: I001 isort found an import in the wrong position
plone/app/vocabularies/groups.py:2:1: I001 isort found an import in the wrong position
plone/app/vocabularies/groups.py:3:1: I001 isort found an import in the wrong position
plone/app/vocabularies/groups.py:6:1: I001 isort found an import in the wrong position
plone/app/vocabularies/groups.py:7:1: I001 isort found an import in the wrong position
plone/app/vocabularies/groups.py:9:1: I001 isort found an import in the wrong position
plone/app/vocabularies/groups.py:11:1: E302 expected 2 blank lines, found 1
plone/app/vocabularies/groups.py:12:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/groups.py:17:45: Q000 Remove bad quotes.
plone/app/vocabularies/groups.py:27:11: T000 Todo note found.
plone/app/vocabularies/groups.py:30:1: W293 blank line contains whitespace
plone/app/vocabularies/groups.py:35:1: W293 blank line contains whitespace
plone/app/vocabularies/groups.py:37:1: W293 blank line contains whitespace
plone/app/vocabularies/groups.py:43:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/groups.py:70:17: Q000 Remove bad quotes.
plone/app/vocabularies/groups.py:71:36: Q000 Remove bad quotes.
plone/app/vocabularies/groups.py:75:54: W292 no newline at end of file
plone/app/vocabularies/security.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/security.py:5:1: I001 isort found an import in the wrong position
plone/app/vocabularies/security.py:7:1: E302 expected 2 blank lines, found 1
plone/app/vocabularies/security.py:10:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/security.py:15:18: E201 whitespace after '['
plone/app/vocabularies/security.py:15:57: E202 whitespace before ']'
plone/app/vocabularies/security.py:19:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:21:1: E302 expected 2 blank lines, found 1
plone/app/vocabularies/security.py:24:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/security.py:29:18: E201 whitespace after '['
plone/app/vocabularies/security.py:29:80: E501 line too long (82 > 79 characters)
plone/app/vocabularies/security.py:29:81: E202 whitespace before ']'
plone/app/vocabularies/security.py:32:1: W293 blank line contains whitespace
plone/app/vocabularies/security.py:33:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/types.py:4:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/types.py:5:1: E302 expected 2 blank lines, found 1
plone/app/vocabularies/types.py:8:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/types.py:12:17: F821 undefined name 'getToolByName'
plone/app/vocabularies/types.py:13:18: E201 whitespace after '['
plone/app/vocabularies/types.py:14:52: E202 whitespace before ']'
plone/app/vocabularies/types.py:18:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:24:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/types.py:28:17: F821 undefined name 'getToolByName'
plone/app/vocabularies/types.py:29:17: F821 undefined name 'getToolByName'
plone/app/vocabularies/types.py:30:18: E201 whitespace after '['
plone/app/vocabularies/types.py:31:56: E202 whitespace before ']'
plone/app/vocabularies/types.py:35:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/interfaces.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/interfaces.py:1:1: I001 isort found an import in the wrong position
plone/app/vocabularies/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/interfaces.py:3:1: E302 expected 2 blank lines, found 1
plone/app/vocabularies/interfaces.py:6:1: W293 blank line contains whitespace
plone/app/vocabularies/interfaces.py:8:9: Q000 Remove bad quotes.
plone/app/vocabularies/interfaces.py:13:1: E302 expected 2 blank lines, found 1
plone/app/vocabularies/interfaces.py:19:9: Q000 Remove bad quotes.
plone/app/vocabularies/interfaces.py:28:9: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/users.py:1:1: F401 'itertools' imported but unused
plone/app/vocabularies/users.py:1:1: I001 isort found an import in the wrong position
plone/app/vocabularies/users.py:2:1: I001 isort found an import in the wrong position
plone/app/vocabularies/users.py:3:1: I001 isort found an import in the wrong position
plone/app/vocabularies/users.py:6:1: I001 isort found an import in the wrong position
plone/app/vocabularies/users.py:7:1: I001 isort found an import in the wrong position
plone/app/vocabularies/users.py:9:1: I001 isort found an import in the wrong position
plone/app/vocabularies/users.py:11:1: E302 expected 2 blank lines, found 1
plone/app/vocabularies/users.py:12:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/users.py:17:45: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:28:1: W293 blank line contains whitespace
plone/app/vocabularies/users.py:34:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/users.py:61:17: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:62:36: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:66:54: W292 no newline at end of file
plone/app/vocabularies/__init__.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/__init__.py:1:2: W292 no newline at end of file
plone/app/vocabularies/catalog.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/catalog.py:1:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/catalog.py:2:1: I001 isort found an import in the wrong position
plone/app/vocabularies/catalog.py:3:1: I001 isort found an import in the wrong position
plone/app/vocabularies/catalog.py:4:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/catalog.py:5:1: I001 isort found an import in the wrong position
plone/app/vocabularies/catalog.py:6:1: I001 isort found an import in the wrong position
plone/app/vocabularies/catalog.py:7:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/catalog.py:8:1: I001 isort found an import in the wrong position
plone/app/vocabularies/catalog.py:9:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/catalog.py:10:1: I001 isort found an import in the wrong position
plone/app/vocabularies/catalog.py:13:36: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:71:12: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:74:31: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:74:46: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:75:13: W601 .has_key() is deprecated, use 'in'
plone/app/vocabularies/catalog.py:78:19: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:78:27: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:79:15: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:79:23: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:79:54: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:79:62: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:84:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/catalog.py:90:47: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:91:51: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:104:1: W293 blank line contains whitespace
plone/app/vocabularies/catalog.py:105:80: E501 line too long (86 > 79 characters)
plone/app/vocabularies/catalog.py:106:17: W601 .has_key() is deprecated, use 'in'
plone/app/vocabularies/catalog.py:112:1: E302 expected 2 blank lines, found 1
plone/app/vocabularies/catalog.py:115:1: W293 blank line contains whitespace
plone/app/vocabularies/catalog.py:122:1: W293 blank line contains whitespace
plone/app/vocabularies/catalog.py:125:1: W293 blank line contains whitespace
plone/app/vocabularies/catalog.py:126:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/catalog.py:127:1: W293 blank line contains whitespace
plone/app/vocabularies/catalog.py:130:1: W293 blank line contains whitespace
plone/app/vocabularies/catalog.py:133:1: W293 blank line contains whitespace
plone/app/vocabularies/catalog.py:136:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/catalog.py:162:28: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:162:49: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:163:62: W291 trailing whitespace
plone/app/vocabularies/catalog.py:179:17: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:180:36: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:187:30: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:192:40: Q000 Remove bad quotes.
plone/app/vocabularies/workflow.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/workflow.py:5:1: I001 isort found an import in the wrong position
plone/app/vocabularies/workflow.py:7:1: E302 expected 2 blank lines, found 1
plone/app/vocabularies/workflow.py:10:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/workflow.py:19:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:21:1: E302 expected 2 blank lines, found 1
plone/app/vocabularies/workflow.py:24:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/workflow.py:31:80: E501 line too long (96 > 79 characters)
plone/app/vocabularies/workflow.py:33:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:39:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/workflow.py:40:1: W293 blank line contains whitespace
plone/app/vocabularies/workflow.py:44:1: W293 blank line contains whitespace
plone/app/vocabularies/workflow.py:46:1: W293 blank line contains whitespace
plone/app/vocabularies/workflow.py:53:80: E501 line too long (97 > 79 characters)
plone/app/vocabularies/workflow.py:53:98: W291 trailing whitespace
plone/app/vocabularies/workflow.py:54:73: E128 continuation line under-indented for visual indent
plone/app/vocabularies/workflow.py:54:80: E501 line too long (89 > 79 characters)
plone/app/vocabularies/workflow.py:59:27: Q000 Remove bad quotes.
plone/app/vocabularies/workflow.py:59:27: S001 found module formatter
plone/app/vocabularies/workflow.py:59:80: E501 line too long (84 > 79 characters)
plone/app/vocabularies/workflow.py:60:1: W293 blank line contains whitespace
plone/app/vocabularies/workflow.py:63:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/terms.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/terms.py:1:1: I001 isort found an import in the wrong position
plone/app/vocabularies/terms.py:2:1: I001 isort found an import in the wrong position
plone/app/vocabularies/terms.py:5:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/terms.py:6:1: E302 expected 2 blank lines, found 1
plone/app/vocabularies/terms.py:7:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/terms.py:8:1: W293 blank line contains whitespace
plone/app/vocabularies/terms.py:10:80: E501 line too long (82 > 79 characters)
plone/app/vocabularies/terms.py:13:1: E302 expected 2 blank lines, found 1
plone/app/vocabularies/terms.py:16:64: W291 trailing whitespace
plone/app/vocabularies/terms.py:17:80: E501 line too long (81 > 79 characters)
plone/app/vocabularies/skins.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/skins.py:5:1: I001 isort found an import in the wrong position
plone/app/vocabularies/skins.py:7:1: E302 expected 2 blank lines, found 1
plone/app/vocabularies/skins.py:10:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/skins.py:15:18: E201 whitespace after '['
plone/app/vocabularies/skins.py:16:53: E202 whitespace before ']'
plone/app/vocabularies/skins.py:20:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/tests/__init__.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/tests/test_catalog.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/tests/test_catalog.py:1:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/tests/test_catalog.py:2:1: I001 isort found an import in the wrong position
plone/app/vocabularies/tests/test_catalog.py:3:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/tests/test_catalog.py:4:1: E302 expected 2 blank lines, found 1
plone/app/vocabularies/tests/test_catalog.py:9:1: E305 expected 2 blank lines after class or function definition, found 1
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


Sorry @ekuefler that was accidental - lmk if this is ok with you


@vangheem Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.vocabularies/64/violations
```
plone/app/vocabularies/__init__.py:20:13: D001 found directlyProvides( replace it with zope.interface.provider
plone/app/vocabularies/actions.py:25:63: C812 missing trailing comma
plone/app/vocabularies/actions.py:52:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/catalog.py:490:14: C812 missing trailing comma
plone/app/vocabularies/catalog.py:546:21: F821 undefined name 'query'
plone/app/vocabularies/catalog.py:631:32: C812 missing trailing comma
plone/app/vocabularies/datetimerelated.py:53:25: C812 missing trailing comma
plone/app/vocabularies/editors.py:25:24: C812 missing trailing comma
plone/app/vocabularies/editors.py:33:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/groups.py:71:11: T000 Todo note found.
plone/app/vocabularies/security.py:73:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:132:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:146:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/skins.py:65:41: C812 missing trailing comma
plone/app/vocabularies/skins.py:66:22: C812 missing trailing comma
plone/app/vocabularies/skins.py:72:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/syndication.py:14:7: T000 Todo note found.
plone/app/vocabularies/syndication.py:43:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/syndication.py:56:33: C812 missing trailing comma
plone/app/vocabularies/syndication.py:68:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/terms.py:57:24: C812 missing trailing comma
plone/app/vocabularies/terms.py:88:36: C812 missing trailing comma
plone/app/vocabularies/testing.py:15:41: C812 missing trailing comma
plone/app/vocabularies/testing.py:18:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:98:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:149:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:189:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:240:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:307:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/users.py:129:20: C812 missing trailing comma
plone/app/vocabularies/workflow.py:72:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:117:11: T000 Todo note found.
plone/app/vocabularies/workflow.py:129:14: C812 missing trailing comma
plone/app/vocabularies/workflow.py:139:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:239:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/tests/test_editors.py:24:54: C812 missing trailing comma
plone/app/vocabularies/tests/test_imagesvocabularies.py:18:50: C812 missing trailing comma
plone/app/vocabularies/tests/test_subjects_under_context.py:43:33: C812 missing trailing comma
plone/app/vocabularies/tests/test_subjects_under_context.py:51:33: C812 missing trailing comma
plone/app/vocabularies/tests/test_subjects_under_context.py:67:51: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:19:47: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:28:47: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:46:53: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:50:56: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:63:56: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:74:56: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:32:47: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:38:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:44:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:50:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:56:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:62:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:68:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:74:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:80:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:86:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:88:10: C812 missing trailing comma
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@Gagaro Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.vocabularies/65/violations
```
plone/app/vocabularies/actions.py:25:63: C812 missing trailing comma
plone/app/vocabularies/actions.py:52:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/groups.py:71:11: T000 Todo note found.
plone/app/vocabularies/security.py:73:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:132:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:146:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:99:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:150:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:190:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:241:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:315:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/testing.py:15:41: C812 missing trailing comma
plone/app/vocabularies/testing.py:18:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/syndication.py:14:7: T000 Todo note found.
plone/app/vocabularies/syndication.py:43:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/syndication.py:56:33: C812 missing trailing comma
plone/app/vocabularies/syndication.py:68:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/interfaces.py:58:1: W391 blank line at end of file
plone/app/vocabularies/users.py:129:20: C812 missing trailing comma
plone/app/vocabularies/__init__.py:3:1: I001 isort found an import in the wrong position
plone/app/vocabularies/__init__.py:13:1: E731 do not assign a lambda expression, use a def
plone/app/vocabularies/__init__.py:30:13: D001 found directlyProvides( replace it with zope.interface.provider
plone/app/vocabularies/__init__.py:69:1: W391 blank line at end of file
plone/app/vocabularies/editors.py:25:24: C812 missing trailing comma
plone/app/vocabularies/editors.py:33:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/datetimerelated.py:54:25: C812 missing trailing comma
plone/app/vocabularies/catalog.py:490:14: C812 missing trailing comma
plone/app/vocabularies/catalog.py:630:32: C812 missing trailing comma
plone/app/vocabularies/workflow.py:72:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:117:11: T000 Todo note found.
plone/app/vocabularies/workflow.py:129:14: C812 missing trailing comma
plone/app/vocabularies/workflow.py:139:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:239:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/terms.py:57:24: C812 missing trailing comma
plone/app/vocabularies/terms.py:88:36: C812 missing trailing comma
plone/app/vocabularies/skins.py:65:41: C812 missing trailing comma
plone/app/vocabularies/skins.py:66:22: C812 missing trailing comma
plone/app/vocabularies/skins.py:72:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/tests/test_editors.py:24:54: C812 missing trailing comma
plone/app/vocabularies/tests/test_imagesvocabularies.py:18:50: C812 missing trailing comma
plone/app/vocabularies/tests/test_subjects_under_context.py:43:33: C812 missing trailing comma
plone/app/vocabularies/tests/test_subjects_under_context.py:51:33: C812 missing trailing comma
plone/app/vocabularies/tests/test_subjects_under_context.py:67:51: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:32:47: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:38:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:44:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:50:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:56:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:62:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:68:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:74:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:80:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:86:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:88:10: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:19:47: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:28:47: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:46:53: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:50:56: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:63:56: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:74:56: C812 missing trailing comma
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@ale-rt Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.vocabularies/69/violations
```
plone/app/vocabularies/__init__.py:12:1: E731 do not assign a lambda expression, use a def
plone/app/vocabularies/__init__.py:18:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/__init__.py:29:13: D001 found directlyProvides( replace it with zope.interface.provider
plone/app/vocabularies/__init__.py:48:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/__init__.py:58:9: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/actions.py:12:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/actions.py:34:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/catalog.py:42:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/catalog.py:114:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/catalog.py:171:9: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/catalog.py:206:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/catalog.py:258:45: C812 missing trailing comma
plone/app/vocabularies/catalog.py:264:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/catalog.py:366:38: C812 missing trailing comma
plone/app/vocabularies/catalog.py:405:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/catalog.py:467:9: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/catalog.py:486:9: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/catalog.py:498:14: C812 missing trailing comma
plone/app/vocabularies/catalog.py:591:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/catalog.py:642:32: C812 missing trailing comma
plone/app/vocabularies/catalog.py:649:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/catalog.py:694:9: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/datetimerelated.py:19:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/datetimerelated.py:33:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/datetimerelated.py:47:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/datetimerelated.py:58:25: C812 missing trailing comma
plone/app/vocabularies/datetimerelated.py:74:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/datetimerelated.py:116:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/datetimerelated.py:158:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/datetimerelated.py:200:17: C812 missing trailing comma
plone/app/vocabularies/datetimerelated.py:206:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/datetimerelated.py:240:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/editors.py:23:56: C812 missing trailing comma
plone/app/vocabularies/groups.py:26:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/groups.py:64:9: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/groups.py:71:11: T000 Todo note found.
plone/app/vocabularies/groups.py:88:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/images.py:17:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/interfaces.py:8:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/interfaces.py:13:9: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/interfaces.py:20:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/interfaces.py:26:9: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/interfaces.py:36:9: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/interfaces.py:48:9: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/interfaces.py:52:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/interfaces.py:55:9: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/language.py:13:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/language.py:63:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/language.py:111:64: C812 missing trailing comma
plone/app/vocabularies/security.py:19:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/security.py:79:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/security.py:139:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/skins.py:16:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/skins.py:63:75: C812 missing trailing comma
plone/app/vocabularies/skins.py:64:22: C812 missing trailing comma
plone/app/vocabularies/syndication.py:14:7: T000 Todo note found.
plone/app/vocabularies/terms.py:23:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/terms.py:32:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/terms.py:44:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/terms.py:57:44: C812 missing trailing comma
plone/app/vocabularies/terms.py:63:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/terms.py:89:26: C812 missing trailing comma
plone/app/vocabularies/terms.py:92:69: C812 missing trailing comma
plone/app/vocabularies/types.py:14:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/types.py:29:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/types.py:43:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/types.py:60:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/types.py:104:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/types.py:156:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/types.py:197:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/types.py:265:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/users.py:37:30: C812 missing trailing comma
plone/app/vocabularies/users.py:45:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/users.py:80:9: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/users.py:128:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/users.py:173:9: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/users.py:193:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/workflow.py:19:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/workflow.py:75:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/workflow.py:115:11: T000 Todo note found.
plone/app/vocabularies/workflow.py:127:14: C812 missing trailing comma
plone/app/vocabularies/workflow.py:143:5: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/workflow.py:223:72: C812 missing trailing comma
plone/app/vocabularies/workflow.py:226:70: C812 missing trailing comma
plone/app/vocabularies/tests/test_editors.py:23:74: C812 missing trailing comma
plone/app/vocabularies/tests/test_imagesvocabularies.py:17:70: C812 missing trailing comma
plone/app/vocabularies/tests/test_subjects_under_context.py:15:9: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/tests/test_subjects_under_context.py:44:67: C812 missing trailing comma
plone/app/vocabularies/tests/test_subjects_under_context.py:50:67: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:48:24: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:54:24: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:69:24: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:79:76: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:35:36: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:41:36: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:47:36: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:53:36: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:59:36: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:65:36: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:71:36: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:77:36: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:83:36: C812 missing trailing comma
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@pbauer Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.vocabularies/68/violations
```
plone/app/vocabularies/__init__.py:3:1: I001 isort found an import in the wrong position
plone/app/vocabularies/__init__.py:13:1: E731 do not assign a lambda expression, use a def
plone/app/vocabularies/__init__.py:30:13: D001 found directlyProvides( replace it with zope.interface.provider
plone/app/vocabularies/__init__.py:69:1: W391 blank line at end of file
plone/app/vocabularies/actions.py:25:63: C812 missing trailing comma
plone/app/vocabularies/actions.py:52:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/catalog.py:490:14: C812 missing trailing comma
plone/app/vocabularies/catalog.py:630:32: C812 missing trailing comma
plone/app/vocabularies/datetimerelated.py:54:25: C812 missing trailing comma
plone/app/vocabularies/editors.py:25:24: C812 missing trailing comma
plone/app/vocabularies/editors.py:33:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/groups.py:71:11: T000 Todo note found.
plone/app/vocabularies/interfaces.py:58:1: W391 blank line at end of file
plone/app/vocabularies/principals.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/principals.py:126:80: E501 line too long (81 > 79 characters)
plone/app/vocabularies/principals.py:130:80: E501 line too long (83 > 79 characters)
plone/app/vocabularies/skins.py:65:41: C812 missing trailing comma
plone/app/vocabularies/skins.py:66:22: C812 missing trailing comma
plone/app/vocabularies/skins.py:72:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/syndication.py:14:7: T000 Todo note found.
plone/app/vocabularies/syndication.py:43:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/syndication.py:56:33: C812 missing trailing comma
plone/app/vocabularies/syndication.py:68:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/terms.py:57:24: C812 missing trailing comma
plone/app/vocabularies/terms.py:88:36: C812 missing trailing comma
plone/app/vocabularies/testing.py:15:41: C812 missing trailing comma
plone/app/vocabularies/testing.py:18:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:99:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:150:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:190:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:241:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:315:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:72:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:117:11: T000 Todo note found.
plone/app/vocabularies/workflow.py:129:14: C812 missing trailing comma
plone/app/vocabularies/workflow.py:139:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:239:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/tests/test_editors.py:24:54: C812 missing trailing comma
plone/app/vocabularies/tests/test_imagesvocabularies.py:18:50: C812 missing trailing comma
plone/app/vocabularies/tests/test_subjects_under_context.py:43:33: C812 missing trailing comma
plone/app/vocabularies/tests/test_subjects_under_context.py:51:33: C812 missing trailing comma
plone/app/vocabularies/tests/test_subjects_under_context.py:67:51: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:19:47: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:28:47: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:46:53: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:50:56: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:63:56: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:74:56: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:32:47: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:38:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:44:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:50:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:56:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:62:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:68:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:74:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:80:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:86:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:92:40: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:94:10: C812 missing trailing comma
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@esteele Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.z3cform/146/violations
```
plone/__init__.py:0:1: C101 Coding magic comment not found
plone/app/__init__.py:0:1: C101 Coding magic comment not found
plone/app/z3cform/inline_validation.py:0:1: C101 Coding magic comment not found
plone/app/z3cform/inline_validation.py:1:1: I003 isort expected 1 blank line in imports, found 0
plone/app/z3cform/inline_validation.py:2:1: I004 isort found an unexpected blank line in imports
plone/app/z3cform/inline_validation.py:3:1: I001 isort found an import in the wrong position
plone/app/z3cform/inline_validation.py:4:1: I001 isort found an import in the wrong position
plone/app/z3cform/inline_validation.py:5:1: I001 isort found an import in the wrong position
plone/app/z3cform/inline_validation.py:6:1: I004 isort found an unexpected blank line in imports
plone/app/z3cform/inline_validation.py:7:1: I001 isort found an import in the wrong position
plone/app/z3cform/inline_validation.py:8:1: I001 isort found an import in the wrong position
plone/app/z3cform/inline_validation.py:15:5: C901 'InlineValidationView.__call__' is too complex (12)
plone/app/z3cform/inline_validation.py:22:12: P002 found "hasattr", consider replacing it
plone/app/z3cform/inline_validation.py:24:16: P002 found "hasattr", consider replacing it
plone/app/z3cform/inline_validation.py:27:1: W293 blank line contains whitespace
plone/app/z3cform/inline_validation.py:28:26: Q000 Remove bad quotes.
plone/app/z3cform/inline_validation.py:33:9: E265 block comment should start with '# '
plone/app/z3cform/inline_validation.py:38:32: F841 local variable 'TypeError' is assigned to but never used
plone/app/z3cform/inline_validation.py:40:17: E731 do not assign a lambda expression, use a def
plone/app/z3cform/widget.py:0:1: C101 Coding magic comment not found
plone/app/z3cform/widget.py:2:1: I001 isort found an import in the wrong position
plone/app/z3cform/widget.py:3:1: I004 isort found an unexpected blank line in imports
plone/app/z3cform/widget.py:7:1: I001 isort found an import in the wrong position
plone/app/z3cform/widget.py:8:1: I003 isort expected 1 blank line in imports, found 0
plone/app/z3cform/widget.py:13:1: E302 expected 2 blank lines, found 1
plone/app/z3cform/widget.py:18:1: E303 too many blank lines (3)
plone/app/z3cform/widget.py:21:1: E302 expected 2 blank lines, found 1
plone/app/z3cform/widget.py:24:1: E302 expected 2 blank lines, found 1
plone/app/z3cform/widget.py:29:1: E303 too many blank lines (3)
plone/app/z3cform/widget.py:32:1: E302 expected 2 blank lines, found 1
plone/app/z3cform/widget.py:35:1: E302 expected 2 blank lines, found 1
plone/app/z3cform/widget.py:38:1: W391 blank line at end of file
plone/app/z3cform/csrf.py:0:1: C101 Coding magic comment not found
plone/app/z3cform/csrf.py:5:1: I001 isort found an import in the wrong position
plone/app/z3cform/csrf.py:6:1: I001 isort found an import in the wrong position
plone/app/z3cform/csrf.py:15:5: D001 found adapts( replace it with zope.component.adapter
plone/app/z3cform/layout.py:0:1: C101 Coding magic comment not found
plone/app/z3cform/layout.py:2:1: F401 'plone.z3cform.layout.FormWrapper' imported but unused
plone/app/z3cform/layout.py:2:1: F401 'plone.z3cform.layout.wrap_form' imported but unused
plone/app/z3cform/layout.py:2:1: I001 isort found an import in the wrong position
plone/app/z3cform/interfaces.py:0:1: C101 Coding magic comment not found
plone/app/z3cform/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
plone/app/z3cform/interfaces.py:3:1: E302 expected 2 blank lines, found 1
plone/app/z3cform/__init__.py:0:1: C101 Coding magic comment not found
plone/app/z3cform/templates.py:0:1: C101 Coding magic comment not found
plone/app/z3cform/templates.py:1:1: I001 isort found an import in the wrong position
plone/app/z3cform/templates.py:2:1: I004 isort found an unexpected blank line in imports
plone/app/z3cform/templates.py:8:1: I001 isort found an import in the wrong position
plone/app/z3cform/templates.py:9:1: I001 isort found an import in the wrong position
plone/app/z3cform/templates.py:10:1: I004 isort found an unexpected blank line in imports
plone/app/z3cform/templates.py:11:1: I001 isort found an import in the wrong position
plone/app/z3cform/templates.py:12:1: I001 isort found an import in the wrong position
plone/app/z3cform/templates.py:13:1: I004 isort found an unexpected blank line in imports
plone/app/z3cform/templates.py:14:1: I001 isort found an import in the wrong position
plone/app/z3cform/templates.py:16:1: E731 do not assign a lambda expression, use a def
plone/app/z3cform/templates.py:16:80: E501 line too long (90 > 79 characters)
plone/app/z3cform/utils.py:0:1: C101 Coding magic comment not found
plone/app/z3cform/utils.py:5:1: I003 isort expected 1 blank line in imports, found 0
plone/app/z3cform/utils.py:5:1: I003 isort expected 1 blank line in imports, found 0
plone/app/z3cform/utils.py:41:13: E129 visually indented line with same indent as next logical line
plone/app/z3cform/object.py:0:1: C101 Coding magic comment not found
plone/app/z3cform/object.py:2:1: I001 isort found an import in the wrong position
plone/app/z3cform/object.py:3:1: I004 isort found an unexpected blank line in imports
plone/app/z3cform/object.py:4:1: I001 isort found an import in the wrong position
plone/app/z3cform/wysiwyg/widget.py:0:1: C101 Coding magic comment not found
plone/app/z3cform/wysiwyg/widget.py:1:1: I003 isort expected 1 blank line in imports, found 0
plone/app/z3cform/wysiwyg/widget.py:4:1: I001 isort found an import in the wrong position
plone/app/z3cform/wysiwyg/widget.py:6:1: I001 isort found an import in the wrong position
plone/app/z3cform/wysiwyg/widget.py:7:1: I001 isort found an import in the wrong position
plone/app/z3cform/wysiwyg/widget.py:8:1: I001 isort found an import in the wrong position
plone/app/z3cform/wysiwyg/widget.py:10:1: E302 expected 2 blank lines, found 1
plone/app/z3cform/wysiwyg/widget.py:13:1: E302 expected 2 blank lines, found 1
plone/app/z3cform/wysiwyg/widget.py:15:1: W293 blank line contains whitespace
plone/app/z3cform/wysiwyg/widget.py:31:1: E302 expected 2 blank lines, found 1
plone/app/z3cform/wysiwyg/__init__.py:0:1: C101 Coding magic comment not found
plone/app/z3cform/wysiwyg/__init__.py:3:1: F401 'widget.WysiwygFieldWidget' imported but unused
plone/app/z3cform/wysiwyg/__init__.py:4:1: W391 blank line at end of file
plone/app/z3cform/queryselect/__init__.py:0:1: C101 Coding magic comment not found
plone/app/z3cform/queryselect/__init__.py:6:1: I001 isort found an import in the wrong position
plone/app/z3cform/queryselect/__init__.py:7:1: I001 isort found an import in the wrong position
plone/app/z3cform/queryselect/__init__.py:8:1: I004 isort found an unexpected blank line in imports
plone/app/z3cform/queryselect/__init__.py:9:1: I001 isort found an import in the wrong position
plone/app/z3cform/queryselect/__init__.py:11:1: E302 expected 2 blank lines, found 1
plone/app/z3cform/queryselect/__init__.py:12:15: D001 found implements( replace it with zope.interface.implementer
plone/app/z3cform/queryselect/__init__.py:19:1: W293 blank line contains whitespace
plone/app/z3cform/queryselect/__init__.py:21:1: W293 blank line contains whitespace
plone/app/z3cform/queryselect/__init__.py:28:1: W293 blank line contains whitespace
plone/app/z3cform/queryselect/__init__.py:32:27: E701 multiple statements on one line (colon)
plone/app/z3cform/queryselect/__init__.py:38:27: E701 multiple statements on one line (colon)
plone/app/z3cform/queryselect/__init__.py:40:1: W293 blank line contains whitespace
plone/app/z3cform/queryselect/__init__.py:46:80: E501 line too long (83 > 79 characters)
plone/app/z3cform/queryselect/__init__.py:48:1: E302 expected 2 blank lines, found 1
plone/app/z3cform/queryselect/__init__.py:49:15: D001 found implements( replace it with zope.interface.implementer
plone/app/z3cform/queryselect/__init__.py:54:1: E302 expected 2 blank lines, found 1
plone/app/z3cform/queryselect/__init__.py:56:19: D001 found implements( replace it with zope.interface.implementer
plone/app/z3cform/tests/tests.py:0:1: C101 Coding magic comment not found
plone/app/z3cform/tests/tests.py:1:1: I003 isort expected 1 blank line in imports, found 0
plone/app/z3cform/tests/tests.py:5:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/tests.py:6:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/tests.py:7:1: I004 isort found an unexpected blank line in imports
plone/app/z3cform/tests/tests.py:8:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/tests.py:9:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/tests.py:10:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/tests.py:11:1: I004 isort found an unexpected blank line in imports
plone/app/z3cform/tests/tests.py:12:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/tests.py:13:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/tests.py:14:1: I004 isort found an unexpected blank line in imports
plone/app/z3cform/tests/tests.py:15:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/tests.py:16:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/tests.py:29:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/z3cform/tests/tests.py:66:10: C812 missing trailing comma
plone/app/z3cform/tests/tests.py:71:48: Q000 Remove bad quotes.
plone/app/z3cform/tests/tests.py:75:31: C812 missing trailing comma
plone/app/z3cform/tests/tests.py:103:3: E122 continuation line missing indentation or outdented
plone/app/z3cform/tests/test_csrf.py:0:1: C101 Coding magic comment not found
plone/app/z3cform/tests/example.py:0:1: C101 Coding magic comment not found
plone/app/z3cform/tests/example.py:1:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/example.py:3:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/example.py:4:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/example.py:5:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/example.py:6:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/example.py:7:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/example.py:11:28: Q000 Remove bad quotes.
plone/app/z3cform/tests/example.py:16:16: Q000 Remove bad quotes.
plone/app/z3cform/tests/example.py:20:5: D001 found implements( replace it with zope.interface.implementer
plone/app/z3cform/tests/example.py:25:13: Q000 Remove bad quotes.
plone/app/z3cform/tests/example.py:38:34: Q000 Remove bad quotes.
plone/app/z3cform/tests/example.py:49:13: Q000 Remove bad quotes.
plone/app/z3cform/tests/example.py:64:1: E303 too many blank lines (3)
plone/app/z3cform/tests/example.py:65:30: Q000 Remove bad quotes.
plone/app/z3cform/tests/example.py:66:55: Q000 Remove bad quotes.
plone/app/z3cform/tests/example.py:67:52: Q000 Remove bad quotes.
plone/app/z3cform/tests/example.py:72:13: Q000 Remove bad quotes.
plone/app/z3cform/tests/test_objectsubform.py:0:1: C101 Coding magic comment not found
plone/app/z3cform/tests/test_objectsubform.py:1:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/test_objectsubform.py:2:1: I004 isort found an unexpected blank line in imports
plone/app/z3cform/tests/test_objectsubform.py:3:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/test_objectsubform.py:7:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/test_objectsubform.py:8:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/test_objectsubform.py:9:1: I004 isort found an unexpected blank line in imports
plone/app/z3cform/tests/test_objectsubform.py:10:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/test_objectsubform.py:11:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/test_objectsubform.py:12:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/test_objectsubform.py:18:15: Q000 Remove bad quotes.
plone/app/z3cform/tests/test_objectsubform.py:18:33: C812 missing trailing comma
plone/app/z3cform/tests/test_objectsubform.py:23:15: D001 found implements( replace it with zope.interface.implementer
plone/app/z3cform/tests/test_objectsubform.py:34:16: S001 found module formatter
plone/app/z3cform/tests/test_objectsubform.py:43:15: Q000 Remove bad quotes.
plone/app/z3cform/tests/test_objectsubform.py:46:19: Q000 Remove bad quotes.
plone/app/z3cform/tests/test_objectsubform.py:47:30: C812 missing trailing comma
plone/app/z3cform/tests/test_objectsubform.py:48:10: C812 missing trailing comma
plone/app/z3cform/tests/test_objectsubform.py:54:13: Q000 Remove bad quotes.
plone/app/z3cform/tests/test_objectsubform.py:59:15: D001 found implements( replace it with zope.interface.implementer
plone/app/z3cform/tests/test_objectsubform.py:108:24: C812 missing trailing comma
plone/app/z3cform/tests/test_objectsubform.py:115:11: T000 Todo note found.
plone/app/z3cform/tests/test_objectsubform.py:115:80: E501 line too long (81 > 79 characters)
plone/app/z3cform/tests/test_objectsubform.py:130:19: C812 missing trailing comma
plone/app/z3cform/tests/test_widget.py:0:1: C101 Coding magic comment not found
plone/app/z3cform/tests/test_widget.py:1:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/test_widget.py:2:1: I004 isort found an unexpected blank line in imports
plone/app/z3cform/tests/test_widget.py:7:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/test_widget.py:9:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/test_widget.py:11:1: E302 expected 2 blank lines, found 1
plone/app/z3cform/tests/test_widget.py:12:15: D001 found implements( replace it with zope.interface.implementer
plone/app/z3cform/tests/test_widget.py:31:80: E501 line too long (85 > 79 characters)
plone/app/z3cform/tests/test_widget.py:32:80: E501 line too long (126 > 79 characters)
plone/app/z3cform/tests/test_widget.py:45:7: W292 no newline at end of file
plone/app/z3cform/tests/layer.py:0:1: C101 Coding magic comment not found
plone/app/z3cform/tests/layer.py:1:1: I003 isort expected 1 blank line in imports, found 0
plone/app/z3cform/tests/layer.py:3:1: I004 isort found an unexpected blank line in imports
plone/app/z3cform/tests/layer.py:4:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/layer.py:5:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/layer.py:6:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/layer.py:7:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/layer.py:8:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/layer.py:9:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/layer.py:10:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/layer.py:11:1: I001 isort found an import in the wrong position
plone/app/z3cform/tests/layer.py:54:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/z3cform/tests/layer.py:74:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/z3cform/tests/layer.py:77:10: Q000 Remove bad quotes.
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@mauritsvanrees Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.vocabularies/70/violations
```
plone/app/vocabularies/__init__.py:3:1: I001 isort found an import in the wrong position
plone/app/vocabularies/__init__.py:9:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/__init__.py:11:1: E731 do not assign a lambda expression, use a def
plone/app/vocabularies/__init__.py:28:13: D001 found directlyProvides( replace it with zope.interface.provider
plone/app/vocabularies/__init__.py:67:1: W391 blank line at end of file
plone/app/vocabularies/actions.py:24:71: C812 missing trailing comma
plone/app/vocabularies/actions.py:50:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/catalog.py:510:14: C812 missing trailing comma
plone/app/vocabularies/catalog.py:650:32: C812 missing trailing comma
plone/app/vocabularies/datetimerelated.py:54:25: C812 missing trailing comma
plone/app/vocabularies/editors.py:25:24: C812 missing trailing comma
plone/app/vocabularies/editors.py:33:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/groups.py:71:11: T000 Todo note found.
plone/app/vocabularies/interfaces.py:58:1: W391 blank line at end of file
plone/app/vocabularies/language.py:112:64: C812 missing trailing comma
plone/app/vocabularies/security.py:73:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:132:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:146:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/skins.py:65:41: C812 missing trailing comma
plone/app/vocabularies/skins.py:66:22: C812 missing trailing comma
plone/app/vocabularies/skins.py:72:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/syndication.py:13:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/syndication.py:15:7: T000 Todo note found.
plone/app/vocabularies/syndication.py:44:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/syndication.py:57:33: C812 missing trailing comma
plone/app/vocabularies/syndication.py:72:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/terms.py:59:24: C812 missing trailing comma
plone/app/vocabularies/terms.py:90:36: C812 missing trailing comma
plone/app/vocabularies/testing.py:15:41: C812 missing trailing comma
plone/app/vocabularies/testing.py:18:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:99:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:150:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:190:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:241:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:315:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/users.py:167:9: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/workflow.py:76:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:124:11: T000 Todo note found.
plone/app/vocabularies/workflow.py:136:14: C812 missing trailing comma
plone/app/vocabularies/workflow.py:145:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:244:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/tests/test_editors.py:24:54: C812 missing trailing comma
plone/app/vocabularies/tests/test_imagesvocabularies.py:18:50: C812 missing trailing comma
plone/app/vocabularies/tests/test_subjects_under_context.py:43:33: C812 missing trailing comma
plone/app/vocabularies/tests/test_subjects_under_context.py:51:33: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:19:47: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:28:47: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:46:53: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:50:56: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:63:56: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:74:56: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:43:47: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:108:10: C812 missing trailing comma
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.