@optilude Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-borg.localrole/4/violations
```
borg/__init__.py:0:1: C101 Coding magic comment not found
borg/localrole/config.py:0:1: C101 Coding magic comment not found
borg/localrole/config.py:3:42: W292 no newline at end of file
borg/localrole/tests.py:0:1: C101 Coding magic comment not found
borg/localrole/tests.py:1:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/tests.py:2:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:3:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:4:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:7:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:8:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:9:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:10:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:11:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:12:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:13:1: F401 'Products.PloneTestCase.layer.PloneSite' imported but unused
borg/localrole/tests.py:13:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:14:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:15:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:17:1: E302 expected 2 blank lines, found 1
borg/localrole/tests.py:20:1: W293 blank line contains whitespace
borg/localrole/tests.py:24:1: W293 blank line contains whitespace
borg/localrole/tests.py:26:1: W293 blank line contains whitespace
borg/localrole/tests.py:30:1: W293 blank line contains whitespace
borg/localrole/tests.py:34:1: W293 blank line contains whitespace
borg/localrole/tests.py:36:1: W293 blank line contains whitespace
borg/localrole/tests.py:38:71: W291 trailing whitespace
borg/localrole/tests.py:41:1: E305 expected 2 blank lines after class or function definition, found 1
borg/localrole/tests.py:44:1: E302 expected 2 blank lines, found 1
borg/localrole/tests.py:50:44: W291 trailing whitespace
borg/localrole/tests.py:53:1: W293 blank line contains whitespace
borg/localrole/tests.py:57:44: W291 trailing whitespace
borg/localrole/tests.py:60:1: W293 blank line contains whitespace
borg/localrole/tests.py:61:1: W293 blank line contains whitespace
borg/localrole/tests.py:63:13: E128 continuation line under-indented for visual indent
borg/localrole/tests.py:66:1: W293 blank line contains whitespace
borg/localrole/tests.py:69:1: E305 expected 2 blank lines after class or function definition, found 1
borg/localrole/interfaces.py:0:1: C101 Coding magic comment not found
borg/localrole/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/interfaces.py:3:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/interfaces.py:5:5: Q000 Remove bad quotes.
borg/localrole/interfaces.py:6:15: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:6:17: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:6:60: C812 missing trailing comma
borg/localrole/interfaces.py:10:5: Q000 Remove bad quotes.
borg/localrole/interfaces.py:11:25: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:11:27: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:11:80: C812 missing trailing comma
borg/localrole/interfaces.py:14:1: E302 expected 2 blank lines, found 1
borg/localrole/interfaces.py:24:12: W292 no newline at end of file
borg/localrole/__init__.py:0:1: C101 Coding magic comment not found
borg/localrole/__init__.py:2:1: I001 isort found an import in the wrong position
borg/localrole/__init__.py:4:1: I001 isort found an import in the wrong position
borg/localrole/__init__.py:8:1: E302 expected 2 blank lines, found 1
borg/localrole/__init__.py:11:1: W293 blank line contains whitespace
borg/localrole/__init__.py:13:37: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:13:39: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:14:39: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:14:41: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:14:80: E501 line too long (92 > 79 characters)
borg/localrole/__init__.py:15:80: E501 line too long (89 > 79 characters)
borg/localrole/__init__.py:16:37: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:16:39: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:16:45: W292 no newline at end of file
borg/localrole/utils.py:0:1: C101 Coding magic comment not found
borg/localrole/utils.py:3:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:4:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:5:1: I004 isort found an unexpected blank line in imports
borg/localrole/utils.py:6:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:8:1: E302 expected 2 blank lines, found 1
borg/localrole/utils.py:12:1: W293 blank line contains whitespace
borg/localrole/utils.py:22:9: T001 print statement found.
borg/localrole/utils.py:22:23: Q000 Remove bad quotes.
borg/localrole/utils.py:22:23: S001 found module formatter
borg/localrole/utils.py:23:1: W293 blank line contains whitespace
borg/localrole/utils.py:24:26: W292 no newline at end of file
borg/localrole/workspace.py:0:1: C101 Coding magic comment not found
borg/localrole/workspace.py:1:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:3:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:4:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:6:1: F401 'zope.component.adapts' imported but unused
borg/localrole/workspace.py:6:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:7:1: F401 'zope.interface.implements' imported but unused
borg/localrole/workspace.py:9:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:10:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:11:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:12:1: I004 isort found an unexpected blank line in imports
borg/localrole/workspace.py:13:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:14:1: I004 isort found an unexpected blank line in imports
borg/localrole/workspace.py:15:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:15:3: T000 Todo note found.
borg/localrole/workspace.py:16:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:17:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:20:9: Q000 Remove bad quotes.
borg/localrole/workspace.py:21:18: Q000 Remove bad quotes.
borg/localrole/workspace.py:23:1: E302 expected 2 blank lines, found 1
borg/localrole/workspace.py:23:80: E501 line too long (82 > 79 characters)
borg/localrole/workspace.py:24:80: E501 line too long (81 > 79 characters)
borg/localrole/workspace.py:30:17: S001 found module formatter
borg/localrole/workspace.py:30:80: E501 line too long (90 > 79 characters)
borg/localrole/workspace.py:33:1: E302 expected 2 blank lines, found 1
borg/localrole/workspace.py:43:17: D001 found adapts( replace it with zope.component.adapter
borg/localrole/workspace.py:44:17: D001 found implements( replace it with zope.interface.implementer
borg/localrole/workspace.py:66:17: D001 found implements( replace it with zope.interface.implementer
borg/localrole/workspace.py:173:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/workspace.py:174:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/workspace.py:176:17: D001 found adapts( replace it with zope.component.adapter
borg/localrole/workspace.py:180:17: D001 found adapts( replace it with zope.component.adapter
borg/localrole/workspace.py:280:1: W293 blank line contains whitespace
borg/localrole/workspace.py:281:17: Q000 Remove bad quotes.
borg/localrole/workspace.py:282:13: E221 multiple spaces before operator
borg/localrole/workspace.py:284:34: Q000 Remove bad quotes.
borg/localrole/workspace.py:318:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:318:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:319:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:329:22: E261 at least two spaces before inline comment
borg/localrole/workspace.py:329:25: T000 Todo note found.
borg/localrole/workspace.py:329:80: E501 line too long (81 > 79 characters)
borg/localrole/workspace.py:330:80: E501 line too long (80 > 79 characters)
borg/localrole/workspace.py:334:80: E501 line too long (84 > 79 characters)
borg/localrole/workspace.py:335:1: W293 blank line contains whitespace
borg/localrole/workspace.py:338:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:338:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:339:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:339:5: C901 'WorkspaceLocalRoleManager.checkLocalRolesAllowed' is too complex (13)
borg/localrole/workspace.py:354:18: E261 at least two spaces before inline comment
borg/localrole/workspace.py:354:21: T000 Todo note found.
borg/localrole/workspace.py:368:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:368:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:369:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:376:18: E261 at least two spaces before inline comment
borg/localrole/workspace.py:376:21: T000 Todo note found.
borg/localrole/workspace.py:382:1: W293 blank line contains whitespace
borg/localrole/workspace.py:383:7: T000 Todo note found.
borg/localrole/workspace.py:385:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:385:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:386:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:397:1: E305 expected 2 blank lines after class or function definition, found 1
borg/localrole/setuphandlers.py:0:1: C101 Coding magic comment not found
borg/localrole/setuphandlers.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/setuphandlers.py:3:1: E302 expected 2 blank lines, found 1
borg/localrole/setuphandlers.py:4:1: W293 blank line contains whitespace
borg/localrole/setuphandlers.py:7:1: W293 blank line contains whitespace
borg/localrole/setuphandlers.py:9:35: W292 no newline at end of file
borg/localrole/bbb/interfaces.py:0:1: C101 Coding magic comment not found
borg/localrole/bbb/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/bbb/interfaces.py:3:3: T000 Todo note found.
borg/localrole/bbb/interfaces.py:6:1: E302 expected 2 blank lines, found 1
borg/localrole/bbb/interfaces.py:8:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:9:74: W291 trailing whitespace
borg/localrole/bbb/interfaces.py:10:72: W291 trailing whitespace
borg/localrole/bbb/interfaces.py:13:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:23:1: E302 expected 2 blank lines, found 1
borg/localrole/bbb/interfaces.py:25:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:29:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:33:8: W292 no newline at end of file
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@optilude Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-borg.localrole/5/violations
```
borg/__init__.py:0:1: C101 Coding magic comment not found
borg/localrole/config.py:0:1: C101 Coding magic comment not found
borg/localrole/config.py:3:42: W292 no newline at end of file
borg/localrole/tests.py:0:1: C101 Coding magic comment not found
borg/localrole/tests.py:1:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/tests.py:2:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:3:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:4:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:5:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:8:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:9:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:10:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:11:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:12:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:13:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:14:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:15:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:16:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:17:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:20:15: E225 missing whitespace around operator
borg/localrole/tests.py:21:8: P002 found "hasattr", consider replacing it
borg/localrole/tests.py:26:5: D001 found implements( replace it with zope.interface.implementer
borg/localrole/tests.py:27:5: E301 expected 1 blank line, found 0
borg/localrole/tests.py:54:1: E302 expected 2 blank lines, found 1
borg/localrole/tests.py:57:1: W293 blank line contains whitespace
borg/localrole/tests.py:61:1: W293 blank line contains whitespace
borg/localrole/tests.py:63:1: W293 blank line contains whitespace
borg/localrole/tests.py:67:1: W293 blank line contains whitespace
borg/localrole/tests.py:73:1: W293 blank line contains whitespace
borg/localrole/tests.py:75:71: W291 trailing whitespace
borg/localrole/tests.py:78:1: E305 expected 2 blank lines after class or function definition, found 1
borg/localrole/tests.py:81:1: E302 expected 2 blank lines, found 1
borg/localrole/tests.py:85:13: E128 continuation line under-indented for visual indent
borg/localrole/tests.py:110:1: E305 expected 2 blank lines after class or function definition, found 1
borg/localrole/interfaces.py:0:1: C101 Coding magic comment not found
borg/localrole/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/interfaces.py:6:5: F401 'borg.localrole.bbb.interfaces.IWorkspace' imported but unused
borg/localrole/interfaces.py:7:5: F401 'borg.localrole.bbb.interfaces.IGroupAwareWorkspace' imported but unused
borg/localrole/interfaces.py:10:6: Q000 Remove bad quotes.
borg/localrole/interfaces.py:11:16: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:11:18: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:11:61: C812 missing trailing comma
borg/localrole/interfaces.py:15:6: Q000 Remove bad quotes.
borg/localrole/interfaces.py:16:26: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:16:28: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:16:80: E501 line too long (80 > 79 characters)
borg/localrole/interfaces.py:16:81: C812 missing trailing comma
borg/localrole/interfaces.py:19:1: E302 expected 2 blank lines, found 1
borg/localrole/interfaces.py:31:1: E302 expected 2 blank lines, found 1
borg/localrole/__init__.py:0:1: C101 Coding magic comment not found
borg/localrole/__init__.py:2:1: I001 isort found an import in the wrong position
borg/localrole/__init__.py:4:1: I001 isort found an import in the wrong position
borg/localrole/__init__.py:8:1: E302 expected 2 blank lines, found 1
borg/localrole/__init__.py:11:1: W293 blank line contains whitespace
borg/localrole/__init__.py:13:37: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:13:39: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:14:39: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:14:41: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:14:80: E501 line too long (92 > 79 characters)
borg/localrole/__init__.py:15:80: E501 line too long (89 > 79 characters)
borg/localrole/__init__.py:16:37: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:16:39: E251 unexpected spaces around keyword / parameter equals
borg/localrole/utils.py:0:1: C101 Coding magic comment not found
borg/localrole/utils.py:3:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:4:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:5:1: I004 isort found an unexpected blank line in imports
borg/localrole/utils.py:6:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:8:1: E302 expected 2 blank lines, found 1
borg/localrole/utils.py:12:1: W293 blank line contains whitespace
borg/localrole/utils.py:22:9: T001 print statement found.
borg/localrole/utils.py:22:23: Q000 Remove bad quotes.
borg/localrole/utils.py:22:23: S001 found module formatter
borg/localrole/utils.py:23:1: W293 blank line contains whitespace
borg/localrole/utils.py:24:26: W292 no newline at end of file
borg/localrole/workspace.py:0:1: C101 Coding magic comment not found
borg/localrole/workspace.py:1:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:3:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:4:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:6:1: F401 'zope.component.adapts' imported but unused
borg/localrole/workspace.py:6:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:7:1: F401 'zope.interface.implements' imported but unused
borg/localrole/workspace.py:9:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:10:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:11:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:12:1: I004 isort found an unexpected blank line in imports
borg/localrole/workspace.py:13:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:14:1: I004 isort found an unexpected blank line in imports
borg/localrole/workspace.py:15:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:15:3: T000 Todo note found.
borg/localrole/workspace.py:16:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:17:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:20:9: Q000 Remove bad quotes.
borg/localrole/workspace.py:21:18: Q000 Remove bad quotes.
borg/localrole/workspace.py:23:1: E302 expected 2 blank lines, found 1
borg/localrole/workspace.py:23:80: E501 line too long (82 > 79 characters)
borg/localrole/workspace.py:24:80: E501 line too long (81 > 79 characters)
borg/localrole/workspace.py:30:17: S001 found module formatter
borg/localrole/workspace.py:30:80: E501 line too long (90 > 79 characters)
borg/localrole/workspace.py:33:1: E302 expected 2 blank lines, found 1
borg/localrole/workspace.py:52:17: D001 found implements( replace it with zope.interface.implementer
borg/localrole/workspace.py:146:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/workspace.py:147:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/workspace.py:149:17: D001 found adapts( replace it with zope.component.adapter
borg/localrole/workspace.py:153:17: D001 found adapts( replace it with zope.component.adapter
borg/localrole/workspace.py:253:1: W293 blank line contains whitespace
borg/localrole/workspace.py:254:17: Q000 Remove bad quotes.
borg/localrole/workspace.py:255:13: E221 multiple spaces before operator
borg/localrole/workspace.py:257:34: Q000 Remove bad quotes.
borg/localrole/workspace.py:291:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:291:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:292:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:302:22: E261 at least two spaces before inline comment
borg/localrole/workspace.py:302:25: T000 Todo note found.
borg/localrole/workspace.py:302:80: E501 line too long (81 > 79 characters)
borg/localrole/workspace.py:303:80: E501 line too long (80 > 79 characters)
borg/localrole/workspace.py:307:80: E501 line too long (84 > 79 characters)
borg/localrole/workspace.py:308:1: W293 blank line contains whitespace
borg/localrole/workspace.py:311:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:311:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:312:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:312:5: C901 'WorkspaceLocalRoleManager.checkLocalRolesAllowed' is too complex (13)
borg/localrole/workspace.py:327:18: E261 at least two spaces before inline comment
borg/localrole/workspace.py:327:21: T000 Todo note found.
borg/localrole/workspace.py:342:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:342:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:343:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:350:18: E261 at least two spaces before inline comment
borg/localrole/workspace.py:350:21: T000 Todo note found.
borg/localrole/workspace.py:356:1: W293 blank line contains whitespace
borg/localrole/workspace.py:357:7: T000 Todo note found.
borg/localrole/workspace.py:359:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:359:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:360:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:371:1: E305 expected 2 blank lines after class or function definition, found 1
borg/localrole/setuphandlers.py:0:1: C101 Coding magic comment not found
borg/localrole/setuphandlers.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/setuphandlers.py:3:1: E302 expected 2 blank lines, found 1
borg/localrole/setuphandlers.py:4:1: W293 blank line contains whitespace
borg/localrole/setuphandlers.py:7:1: W293 blank line contains whitespace
borg/localrole/setuphandlers.py:9:35: W292 no newline at end of file
borg/localrole/factory_adapter.py:0:1: C101 Coding magic comment not found
borg/localrole/factory_adapter.py:3:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/factory_adapter.py:3:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:4:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:5:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:6:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:8:1: E302 expected 2 blank lines, found 1
borg/localrole/factory_adapter.py:21:17: D001 found implements( replace it with zope.interface.implementer
borg/localrole/factory_adapter.py:28:68: W291 trailing whitespace
borg/localrole/factory_adapter.py:65:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/factory_adapter.py:66:80: E501 line too long (80 > 79 characters)
borg/localrole/factory_adapter.py:78:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/factory_adapter.py:92:0: P102 docstring does contain unindexed parameters
borg/localrole/factory_adapter.py:93:5: D001 found adapts( replace it with zope.component.adapter
borg/localrole/factory_adapter.py:94:5: D001 found implements( replace it with zope.interface.implementer
borg/localrole/bbb/interfaces.py:0:1: C101 Coding magic comment not found
borg/localrole/bbb/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/bbb/interfaces.py:3:3: T000 Todo note found.
borg/localrole/bbb/interfaces.py:6:1: E302 expected 2 blank lines, found 1
borg/localrole/bbb/interfaces.py:8:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:9:74: W291 trailing whitespace
borg/localrole/bbb/interfaces.py:10:72: W291 trailing whitespace
borg/localrole/bbb/interfaces.py:13:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:23:1: E302 expected 2 blank lines, found 1
borg/localrole/bbb/interfaces.py:25:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:29:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:33:8: W292 no newline at end of file
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@optilude Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-borg.localrole/6/violations
```
borg/__init__.py:0:1: C101 Coding magic comment not found
borg/localrole/config.py:0:1: C101 Coding magic comment not found
borg/localrole/config.py:3:42: W292 no newline at end of file
borg/localrole/tests.py:0:1: C101 Coding magic comment not found
borg/localrole/tests.py:1:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/tests.py:2:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:3:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:4:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:5:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:8:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:9:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:10:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:11:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:12:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:13:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:14:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:15:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:16:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:17:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:20:15: E225 missing whitespace around operator
borg/localrole/tests.py:21:8: P002 found "hasattr", consider replacing it
borg/localrole/tests.py:26:5: D001 found implements( replace it with zope.interface.implementer
borg/localrole/tests.py:27:5: E301 expected 1 blank line, found 0
borg/localrole/tests.py:54:1: E302 expected 2 blank lines, found 1
borg/localrole/tests.py:57:1: W293 blank line contains whitespace
borg/localrole/tests.py:61:1: W293 blank line contains whitespace
borg/localrole/tests.py:63:1: W293 blank line contains whitespace
borg/localrole/tests.py:67:1: W293 blank line contains whitespace
borg/localrole/tests.py:73:1: W293 blank line contains whitespace
borg/localrole/tests.py:75:71: W291 trailing whitespace
borg/localrole/tests.py:78:1: E305 expected 2 blank lines after class or function definition, found 1
borg/localrole/tests.py:81:1: E302 expected 2 blank lines, found 1
borg/localrole/tests.py:85:13: E128 continuation line under-indented for visual indent
borg/localrole/tests.py:110:1: E305 expected 2 blank lines after class or function definition, found 1
borg/localrole/interfaces.py:0:1: C101 Coding magic comment not found
borg/localrole/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/interfaces.py:6:5: F401 'borg.localrole.bbb.interfaces.IWorkspace' imported but unused
borg/localrole/interfaces.py:7:5: F401 'borg.localrole.bbb.interfaces.IGroupAwareWorkspace' imported but unused
borg/localrole/interfaces.py:10:6: Q000 Remove bad quotes.
borg/localrole/interfaces.py:11:16: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:11:18: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:11:61: C812 missing trailing comma
borg/localrole/interfaces.py:15:6: Q000 Remove bad quotes.
borg/localrole/interfaces.py:16:26: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:16:28: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:16:80: E501 line too long (80 > 79 characters)
borg/localrole/interfaces.py:16:81: C812 missing trailing comma
borg/localrole/interfaces.py:19:1: E302 expected 2 blank lines, found 1
borg/localrole/interfaces.py:31:1: E302 expected 2 blank lines, found 1
borg/localrole/__init__.py:0:1: C101 Coding magic comment not found
borg/localrole/__init__.py:2:1: I001 isort found an import in the wrong position
borg/localrole/__init__.py:4:1: I001 isort found an import in the wrong position
borg/localrole/__init__.py:8:1: E302 expected 2 blank lines, found 1
borg/localrole/__init__.py:11:1: W293 blank line contains whitespace
borg/localrole/__init__.py:13:37: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:13:39: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:14:39: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:14:41: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:14:80: E501 line too long (92 > 79 characters)
borg/localrole/__init__.py:15:80: E501 line too long (89 > 79 characters)
borg/localrole/__init__.py:16:37: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:16:39: E251 unexpected spaces around keyword / parameter equals
borg/localrole/utils.py:0:1: C101 Coding magic comment not found
borg/localrole/utils.py:3:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:4:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:5:1: I004 isort found an unexpected blank line in imports
borg/localrole/utils.py:6:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:8:1: E302 expected 2 blank lines, found 1
borg/localrole/utils.py:12:1: W293 blank line contains whitespace
borg/localrole/utils.py:22:9: T001 print statement found.
borg/localrole/utils.py:22:23: Q000 Remove bad quotes.
borg/localrole/utils.py:22:23: S001 found module formatter
borg/localrole/utils.py:23:1: W293 blank line contains whitespace
borg/localrole/utils.py:24:26: W292 no newline at end of file
borg/localrole/workspace.py:0:1: C101 Coding magic comment not found
borg/localrole/workspace.py:1:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:3:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:4:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:6:1: F401 'zope.component.adapts' imported but unused
borg/localrole/workspace.py:6:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:7:1: F401 'zope.interface.implements' imported but unused
borg/localrole/workspace.py:9:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:10:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:11:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:12:1: I004 isort found an unexpected blank line in imports
borg/localrole/workspace.py:13:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:14:1: I004 isort found an unexpected blank line in imports
borg/localrole/workspace.py:15:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:15:3: T000 Todo note found.
borg/localrole/workspace.py:16:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:17:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:20:9: Q000 Remove bad quotes.
borg/localrole/workspace.py:21:18: Q000 Remove bad quotes.
borg/localrole/workspace.py:23:1: E302 expected 2 blank lines, found 1
borg/localrole/workspace.py:23:80: E501 line too long (82 > 79 characters)
borg/localrole/workspace.py:24:80: E501 line too long (81 > 79 characters)
borg/localrole/workspace.py:30:17: S001 found module formatter
borg/localrole/workspace.py:30:80: E501 line too long (90 > 79 characters)
borg/localrole/workspace.py:33:1: E302 expected 2 blank lines, found 1
borg/localrole/workspace.py:52:17: D001 found implements( replace it with zope.interface.implementer
borg/localrole/workspace.py:146:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/workspace.py:147:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/workspace.py:149:17: D001 found adapts( replace it with zope.component.adapter
borg/localrole/workspace.py:153:17: D001 found adapts( replace it with zope.component.adapter
borg/localrole/workspace.py:253:1: W293 blank line contains whitespace
borg/localrole/workspace.py:254:17: Q000 Remove bad quotes.
borg/localrole/workspace.py:255:13: E221 multiple spaces before operator
borg/localrole/workspace.py:257:34: Q000 Remove bad quotes.
borg/localrole/workspace.py:291:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:291:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:292:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:302:22: E261 at least two spaces before inline comment
borg/localrole/workspace.py:302:25: T000 Todo note found.
borg/localrole/workspace.py:302:80: E501 line too long (81 > 79 characters)
borg/localrole/workspace.py:303:80: E501 line too long (80 > 79 characters)
borg/localrole/workspace.py:307:80: E501 line too long (84 > 79 characters)
borg/localrole/workspace.py:308:1: W293 blank line contains whitespace
borg/localrole/workspace.py:311:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:311:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:312:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:312:5: C901 'WorkspaceLocalRoleManager.checkLocalRolesAllowed' is too complex (13)
borg/localrole/workspace.py:327:18: E261 at least two spaces before inline comment
borg/localrole/workspace.py:327:21: T000 Todo note found.
borg/localrole/workspace.py:342:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:342:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:343:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:350:18: E261 at least two spaces before inline comment
borg/localrole/workspace.py:350:21: T000 Todo note found.
borg/localrole/workspace.py:356:1: W293 blank line contains whitespace
borg/localrole/workspace.py:357:7: T000 Todo note found.
borg/localrole/workspace.py:359:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:359:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:360:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:371:1: E305 expected 2 blank lines after class or function definition, found 1
borg/localrole/setuphandlers.py:0:1: C101 Coding magic comment not found
borg/localrole/setuphandlers.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/setuphandlers.py:3:1: E302 expected 2 blank lines, found 1
borg/localrole/setuphandlers.py:4:1: W293 blank line contains whitespace
borg/localrole/setuphandlers.py:7:1: W293 blank line contains whitespace
borg/localrole/setuphandlers.py:9:35: W292 no newline at end of file
borg/localrole/factory_adapter.py:0:1: C101 Coding magic comment not found
borg/localrole/factory_adapter.py:3:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/factory_adapter.py:3:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:4:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:5:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:6:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:8:1: E302 expected 2 blank lines, found 1
borg/localrole/factory_adapter.py:21:17: D001 found implements( replace it with zope.interface.implementer
borg/localrole/factory_adapter.py:28:68: W291 trailing whitespace
borg/localrole/factory_adapter.py:65:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/factory_adapter.py:66:80: E501 line too long (80 > 79 characters)
borg/localrole/factory_adapter.py:78:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/factory_adapter.py:92:0: P102 docstring does contain unindexed parameters
borg/localrole/factory_adapter.py:93:5: D001 found adapts( replace it with zope.component.adapter
borg/localrole/factory_adapter.py:94:5: D001 found implements( replace it with zope.interface.implementer
borg/localrole/bbb/interfaces.py:0:1: C101 Coding magic comment not found
borg/localrole/bbb/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/bbb/interfaces.py:3:3: T000 Todo note found.
borg/localrole/bbb/interfaces.py:6:1: E302 expected 2 blank lines, found 1
borg/localrole/bbb/interfaces.py:8:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:9:74: W291 trailing whitespace
borg/localrole/bbb/interfaces.py:10:72: W291 trailing whitespace
borg/localrole/bbb/interfaces.py:13:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:23:1: E302 expected 2 blank lines, found 1
borg/localrole/bbb/interfaces.py:25:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:29:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:33:8: W292 no newline at end of file
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@optilude Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-borg.localrole/7/violations
```
borg/__init__.py:0:1: C101 Coding magic comment not found
borg/localrole/config.py:0:1: C101 Coding magic comment not found
borg/localrole/config.py:3:42: W292 no newline at end of file
borg/localrole/tests.py:0:1: C101 Coding magic comment not found
borg/localrole/tests.py:1:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/tests.py:2:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:3:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:4:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:5:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:8:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:9:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:10:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:11:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:12:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:13:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:14:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:15:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:16:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:17:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:18:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:21:15: E225 missing whitespace around operator
borg/localrole/tests.py:22:8: P002 found "hasattr", consider replacing it
borg/localrole/tests.py:27:5: D001 found implements( replace it with zope.interface.implementer
borg/localrole/tests.py:28:5: E301 expected 1 blank line, found 0
borg/localrole/tests.py:58:1: E302 expected 2 blank lines, found 1
borg/localrole/tests.py:61:1: W293 blank line contains whitespace
borg/localrole/tests.py:65:1: W293 blank line contains whitespace
borg/localrole/tests.py:67:1: W293 blank line contains whitespace
borg/localrole/tests.py:71:1: W293 blank line contains whitespace
borg/localrole/tests.py:77:1: W293 blank line contains whitespace
borg/localrole/tests.py:79:71: W291 trailing whitespace
borg/localrole/tests.py:82:1: E305 expected 2 blank lines after class or function definition, found 1
borg/localrole/tests.py:85:1: E302 expected 2 blank lines, found 1
borg/localrole/tests.py:106:13: E128 continuation line under-indented for visual indent
borg/localrole/tests.py:114:5: E303 too many blank lines (2)
borg/localrole/tests.py:116:1: E305 expected 2 blank lines after class or function definition, found 1
borg/localrole/interfaces.py:0:1: C101 Coding magic comment not found
borg/localrole/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/interfaces.py:6:5: F401 'borg.localrole.bbb.interfaces.IWorkspace' imported but unused
borg/localrole/interfaces.py:7:5: F401 'borg.localrole.bbb.interfaces.IGroupAwareWorkspace' imported but unused
borg/localrole/interfaces.py:10:6: Q000 Remove bad quotes.
borg/localrole/interfaces.py:11:16: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:11:18: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:11:61: C812 missing trailing comma
borg/localrole/interfaces.py:15:6: Q000 Remove bad quotes.
borg/localrole/interfaces.py:16:26: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:16:28: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:16:80: E501 line too long (80 > 79 characters)
borg/localrole/interfaces.py:16:81: C812 missing trailing comma
borg/localrole/interfaces.py:19:1: E302 expected 2 blank lines, found 1
borg/localrole/interfaces.py:31:1: E302 expected 2 blank lines, found 1
borg/localrole/__init__.py:0:1: C101 Coding magic comment not found
borg/localrole/__init__.py:2:1: I001 isort found an import in the wrong position
borg/localrole/__init__.py:4:1: I001 isort found an import in the wrong position
borg/localrole/__init__.py:8:1: E302 expected 2 blank lines, found 1
borg/localrole/__init__.py:11:1: W293 blank line contains whitespace
borg/localrole/__init__.py:13:37: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:13:39: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:14:39: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:14:41: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:14:80: E501 line too long (92 > 79 characters)
borg/localrole/__init__.py:15:80: E501 line too long (89 > 79 characters)
borg/localrole/__init__.py:16:37: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:16:39: E251 unexpected spaces around keyword / parameter equals
borg/localrole/utils.py:0:1: C101 Coding magic comment not found
borg/localrole/utils.py:3:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:4:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:5:1: I004 isort found an unexpected blank line in imports
borg/localrole/utils.py:6:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:7:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:9:1: E302 expected 2 blank lines, found 1
borg/localrole/utils.py:13:1: W293 blank line contains whitespace
borg/localrole/utils.py:22:9: T001 print statement found.
borg/localrole/utils.py:22:23: Q000 Remove bad quotes.
borg/localrole/utils.py:22:23: S001 found module formatter
borg/localrole/utils.py:23:1: W293 blank line contains whitespace
borg/localrole/workspace.py:0:1: C101 Coding magic comment not found
borg/localrole/workspace.py:1:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:3:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:4:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:6:1: F401 'zope.component.adapts' imported but unused
borg/localrole/workspace.py:6:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:7:1: F401 'zope.interface.implements' imported but unused
borg/localrole/workspace.py:9:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:10:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:11:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:12:1: I004 isort found an unexpected blank line in imports
borg/localrole/workspace.py:13:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:14:1: I004 isort found an unexpected blank line in imports
borg/localrole/workspace.py:15:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:15:3: T000 Todo note found.
borg/localrole/workspace.py:16:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:17:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:20:9: Q000 Remove bad quotes.
borg/localrole/workspace.py:21:18: Q000 Remove bad quotes.
borg/localrole/workspace.py:23:1: E302 expected 2 blank lines, found 1
borg/localrole/workspace.py:23:80: E501 line too long (82 > 79 characters)
borg/localrole/workspace.py:24:80: E501 line too long (81 > 79 characters)
borg/localrole/workspace.py:30:17: S001 found module formatter
borg/localrole/workspace.py:30:80: E501 line too long (90 > 79 characters)
borg/localrole/workspace.py:33:1: E302 expected 2 blank lines, found 1
borg/localrole/workspace.py:52:17: D001 found implements( replace it with zope.interface.implementer
borg/localrole/workspace.py:146:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/workspace.py:147:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/workspace.py:149:17: D001 found adapts( replace it with zope.component.adapter
borg/localrole/workspace.py:153:17: D001 found adapts( replace it with zope.component.adapter
borg/localrole/workspace.py:253:17: Q000 Remove bad quotes.
borg/localrole/workspace.py:254:13: E221 multiple spaces before operator
borg/localrole/workspace.py:256:34: Q000 Remove bad quotes.
borg/localrole/workspace.py:265:16: P002 found "hasattr", consider replacing it
borg/localrole/workspace.py:301:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:301:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:302:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:319:19: T000 Todo note found.
borg/localrole/workspace.py:321:80: E501 line too long (80 > 79 characters)
borg/localrole/workspace.py:325:80: E501 line too long (84 > 79 characters)
borg/localrole/workspace.py:328:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:328:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:329:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:329:5: C901 'WorkspaceLocalRoleManager.checkLocalRolesAllowed' is too complex (17)
borg/localrole/workspace.py:352:15: T000 Todo note found.
borg/localrole/workspace.py:374:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:374:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:375:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:382:18: E261 at least two spaces before inline comment
borg/localrole/workspace.py:382:21: T000 Todo note found.
borg/localrole/workspace.py:388:1: W293 blank line contains whitespace
borg/localrole/workspace.py:389:7: T000 Todo note found.
borg/localrole/workspace.py:391:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:391:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:392:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:403:1: E305 expected 2 blank lines after class or function definition, found 1
borg/localrole/setuphandlers.py:0:1: C101 Coding magic comment not found
borg/localrole/setuphandlers.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/setuphandlers.py:3:1: E302 expected 2 blank lines, found 1
borg/localrole/setuphandlers.py:4:1: W293 blank line contains whitespace
borg/localrole/setuphandlers.py:7:1: W293 blank line contains whitespace
borg/localrole/setuphandlers.py:9:35: W292 no newline at end of file
borg/localrole/factory_adapter.py:0:1: C101 Coding magic comment not found
borg/localrole/factory_adapter.py:3:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/factory_adapter.py:3:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:4:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:5:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:6:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:8:1: E302 expected 2 blank lines, found 1
borg/localrole/factory_adapter.py:21:17: D001 found implements( replace it with zope.interface.implementer
borg/localrole/factory_adapter.py:28:68: W291 trailing whitespace
borg/localrole/factory_adapter.py:65:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/factory_adapter.py:66:80: E501 line too long (80 > 79 characters)
borg/localrole/factory_adapter.py:78:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/factory_adapter.py:92:0: P102 docstring does contain unindexed parameters
borg/localrole/factory_adapter.py:93:5: D001 found adapts( replace it with zope.component.adapter
borg/localrole/factory_adapter.py:94:5: D001 found implements( replace it with zope.interface.implementer
borg/localrole/default_adapter.py:0:1: C101 Coding magic comment not found
borg/localrole/default_adapter.py:1:1: I001 isort found an import in the wrong position
borg/localrole/default_adapter.py:3:1: I001 isort found an import in the wrong position
borg/localrole/default_adapter.py:53:5: D001 found implements( replace it with zope.interface.implementer
borg/localrole/default_adapter.py:54:5: D001 found adapts( replace it with zope.component.adapter
borg/localrole/bbb/interfaces.py:0:1: C101 Coding magic comment not found
borg/localrole/bbb/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/bbb/interfaces.py:3:3: T000 Todo note found.
borg/localrole/bbb/interfaces.py:6:1: E302 expected 2 blank lines, found 1
borg/localrole/bbb/interfaces.py:8:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:9:74: W291 trailing whitespace
borg/localrole/bbb/interfaces.py:10:72: W291 trailing whitespace
borg/localrole/bbb/interfaces.py:13:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:23:1: E302 expected 2 blank lines, found 1
borg/localrole/bbb/interfaces.py:25:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:29:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:33:8: W292 no newline at end of file
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@optilude Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-borg.localrole/8/violations
```
borg/__init__.py:0:1: C101 Coding magic comment not found
borg/localrole/config.py:0:1: C101 Coding magic comment not found
borg/localrole/config.py:3:42: W292 no newline at end of file
borg/localrole/tests.py:0:1: C101 Coding magic comment not found
borg/localrole/tests.py:1:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/tests.py:2:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:3:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:4:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:5:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:8:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:9:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:10:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:11:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:12:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:13:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:14:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:15:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:16:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:17:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:18:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:21:15: E225 missing whitespace around operator
borg/localrole/tests.py:22:8: P002 found "hasattr", consider replacing it
borg/localrole/tests.py:27:5: D001 found implements( replace it with zope.interface.implementer
borg/localrole/tests.py:28:5: E301 expected 1 blank line, found 0
borg/localrole/tests.py:58:1: E302 expected 2 blank lines, found 1
borg/localrole/tests.py:61:1: W293 blank line contains whitespace
borg/localrole/tests.py:65:1: W293 blank line contains whitespace
borg/localrole/tests.py:67:1: W293 blank line contains whitespace
borg/localrole/tests.py:71:1: W293 blank line contains whitespace
borg/localrole/tests.py:77:1: W293 blank line contains whitespace
borg/localrole/tests.py:79:71: W291 trailing whitespace
borg/localrole/tests.py:82:1: E305 expected 2 blank lines after class or function definition, found 1
borg/localrole/tests.py:85:1: E302 expected 2 blank lines, found 1
borg/localrole/tests.py:106:13: E128 continuation line under-indented for visual indent
borg/localrole/tests.py:114:5: E303 too many blank lines (2)
borg/localrole/tests.py:116:1: E305 expected 2 blank lines after class or function definition, found 1
borg/localrole/interfaces.py:0:1: C101 Coding magic comment not found
borg/localrole/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/interfaces.py:6:5: F401 'borg.localrole.bbb.interfaces.IWorkspace' imported but unused
borg/localrole/interfaces.py:7:5: F401 'borg.localrole.bbb.interfaces.IGroupAwareWorkspace' imported but unused
borg/localrole/interfaces.py:10:6: Q000 Remove bad quotes.
borg/localrole/interfaces.py:11:16: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:11:18: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:11:61: C812 missing trailing comma
borg/localrole/interfaces.py:15:6: Q000 Remove bad quotes.
borg/localrole/interfaces.py:16:26: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:16:28: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:16:80: E501 line too long (80 > 79 characters)
borg/localrole/interfaces.py:16:81: C812 missing trailing comma
borg/localrole/interfaces.py:19:1: E302 expected 2 blank lines, found 1
borg/localrole/interfaces.py:31:1: E302 expected 2 blank lines, found 1
borg/localrole/__init__.py:0:1: C101 Coding magic comment not found
borg/localrole/__init__.py:2:1: I001 isort found an import in the wrong position
borg/localrole/__init__.py:4:1: I001 isort found an import in the wrong position
borg/localrole/__init__.py:8:1: E302 expected 2 blank lines, found 1
borg/localrole/__init__.py:11:1: W293 blank line contains whitespace
borg/localrole/__init__.py:13:37: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:13:39: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:14:39: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:14:41: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:14:80: E501 line too long (92 > 79 characters)
borg/localrole/__init__.py:15:80: E501 line too long (89 > 79 characters)
borg/localrole/__init__.py:16:37: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:16:39: E251 unexpected spaces around keyword / parameter equals
borg/localrole/utils.py:0:1: C101 Coding magic comment not found
borg/localrole/utils.py:3:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:4:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:5:1: I004 isort found an unexpected blank line in imports
borg/localrole/utils.py:6:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:7:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:9:1: E302 expected 2 blank lines, found 1
borg/localrole/utils.py:13:1: W293 blank line contains whitespace
borg/localrole/utils.py:22:9: T001 print statement found.
borg/localrole/utils.py:22:23: Q000 Remove bad quotes.
borg/localrole/utils.py:22:23: S001 found module formatter
borg/localrole/utils.py:23:1: W293 blank line contains whitespace
borg/localrole/workspace.py:0:1: C101 Coding magic comment not found
borg/localrole/workspace.py:1:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:3:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:4:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:6:1: F401 'zope.component.adapts' imported but unused
borg/localrole/workspace.py:6:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:7:1: F401 'zope.interface.implements' imported but unused
borg/localrole/workspace.py:9:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:10:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:11:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:12:1: I004 isort found an unexpected blank line in imports
borg/localrole/workspace.py:13:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:14:1: I004 isort found an unexpected blank line in imports
borg/localrole/workspace.py:15:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:15:3: T000 Todo note found.
borg/localrole/workspace.py:16:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:17:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:20:9: Q000 Remove bad quotes.
borg/localrole/workspace.py:21:18: Q000 Remove bad quotes.
borg/localrole/workspace.py:23:1: E302 expected 2 blank lines, found 1
borg/localrole/workspace.py:23:80: E501 line too long (82 > 79 characters)
borg/localrole/workspace.py:24:80: E501 line too long (81 > 79 characters)
borg/localrole/workspace.py:30:17: S001 found module formatter
borg/localrole/workspace.py:30:80: E501 line too long (90 > 79 characters)
borg/localrole/workspace.py:33:1: E302 expected 2 blank lines, found 1
borg/localrole/workspace.py:52:17: D001 found implements( replace it with zope.interface.implementer
borg/localrole/workspace.py:146:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/workspace.py:147:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/workspace.py:149:17: D001 found adapts( replace it with zope.component.adapter
borg/localrole/workspace.py:153:17: D001 found adapts( replace it with zope.component.adapter
borg/localrole/workspace.py:253:17: Q000 Remove bad quotes.
borg/localrole/workspace.py:254:13: E221 multiple spaces before operator
borg/localrole/workspace.py:256:34: Q000 Remove bad quotes.
borg/localrole/workspace.py:265:16: P002 found "hasattr", consider replacing it
borg/localrole/workspace.py:301:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:301:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:302:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:319:19: T000 Todo note found.
borg/localrole/workspace.py:321:80: E501 line too long (80 > 79 characters)
borg/localrole/workspace.py:325:80: E501 line too long (84 > 79 characters)
borg/localrole/workspace.py:328:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:328:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:329:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:329:5: C901 'WorkspaceLocalRoleManager.checkLocalRolesAllowed' is too complex (17)
borg/localrole/workspace.py:352:15: T000 Todo note found.
borg/localrole/workspace.py:374:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:374:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:375:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:382:18: E261 at least two spaces before inline comment
borg/localrole/workspace.py:382:21: T000 Todo note found.
borg/localrole/workspace.py:388:1: W293 blank line contains whitespace
borg/localrole/workspace.py:389:7: T000 Todo note found.
borg/localrole/workspace.py:391:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:391:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:392:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:403:1: E305 expected 2 blank lines after class or function definition, found 1
borg/localrole/setuphandlers.py:0:1: C101 Coding magic comment not found
borg/localrole/setuphandlers.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/setuphandlers.py:3:1: E302 expected 2 blank lines, found 1
borg/localrole/setuphandlers.py:4:1: W293 blank line contains whitespace
borg/localrole/setuphandlers.py:7:1: W293 blank line contains whitespace
borg/localrole/setuphandlers.py:9:35: W292 no newline at end of file
borg/localrole/factory_adapter.py:0:1: C101 Coding magic comment not found
borg/localrole/factory_adapter.py:3:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/factory_adapter.py:3:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:4:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:5:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:6:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:8:1: E302 expected 2 blank lines, found 1
borg/localrole/factory_adapter.py:21:17: D001 found implements( replace it with zope.interface.implementer
borg/localrole/factory_adapter.py:28:68: W291 trailing whitespace
borg/localrole/factory_adapter.py:65:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/factory_adapter.py:66:80: E501 line too long (80 > 79 characters)
borg/localrole/factory_adapter.py:78:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/factory_adapter.py:92:0: P102 docstring does contain unindexed parameters
borg/localrole/factory_adapter.py:93:5: D001 found adapts( replace it with zope.component.adapter
borg/localrole/factory_adapter.py:94:5: D001 found implements( replace it with zope.interface.implementer
borg/localrole/default_adapter.py:0:1: C101 Coding magic comment not found
borg/localrole/default_adapter.py:1:1: I001 isort found an import in the wrong position
borg/localrole/default_adapter.py:3:1: I001 isort found an import in the wrong position
borg/localrole/default_adapter.py:53:5: D001 found implements( replace it with zope.interface.implementer
borg/localrole/default_adapter.py:54:5: D001 found adapts( replace it with zope.component.adapter
borg/localrole/bbb/interfaces.py:0:1: C101 Coding magic comment not found
borg/localrole/bbb/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/bbb/interfaces.py:3:3: T000 Todo note found.
borg/localrole/bbb/interfaces.py:6:1: E302 expected 2 blank lines, found 1
borg/localrole/bbb/interfaces.py:8:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:9:74: W291 trailing whitespace
borg/localrole/bbb/interfaces.py:10:72: W291 trailing whitespace
borg/localrole/bbb/interfaces.py:13:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:23:1: E302 expected 2 blank lines, found 1
borg/localrole/bbb/interfaces.py:25:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:29:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:33:8: W292 no newline at end of file
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@witsch Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-borg.localrole/9/violations
```
borg/__init__.py:0:1: C101 Coding magic comment not found
borg/__init__.py:6:36: E261 at least two spaces before inline comment
borg/localrole/config.py:0:1: C101 Coding magic comment not found
borg/localrole/config.py:3:42: W292 no newline at end of file
borg/localrole/tests.py:0:1: C101 Coding magic comment not found
borg/localrole/tests.py:1:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/tests.py:2:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:3:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:4:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:5:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:8:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:9:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:10:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:11:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:12:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:13:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:14:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:15:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:16:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:17:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:18:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:21:15: E225 missing whitespace around operator
borg/localrole/tests.py:22:8: P002 found "hasattr", consider replacing it
borg/localrole/tests.py:27:5: D001 found implements( replace it with zope.interface.implementer
borg/localrole/tests.py:28:5: E301 expected 1 blank line, found 0
borg/localrole/tests.py:58:1: E302 expected 2 blank lines, found 1
borg/localrole/tests.py:61:1: W293 blank line contains whitespace
borg/localrole/tests.py:65:1: W293 blank line contains whitespace
borg/localrole/tests.py:67:1: W293 blank line contains whitespace
borg/localrole/tests.py:71:1: W293 blank line contains whitespace
borg/localrole/tests.py:77:1: W293 blank line contains whitespace
borg/localrole/tests.py:79:71: W291 trailing whitespace
borg/localrole/tests.py:82:1: E305 expected 2 blank lines after class or function definition, found 1
borg/localrole/tests.py:85:1: E302 expected 2 blank lines, found 1
borg/localrole/tests.py:106:13: E128 continuation line under-indented for visual indent
borg/localrole/tests.py:114:5: E303 too many blank lines (2)
borg/localrole/tests.py:116:1: E305 expected 2 blank lines after class or function definition, found 1
borg/localrole/interfaces.py:0:1: C101 Coding magic comment not found
borg/localrole/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/interfaces.py:11:6: Q000 Remove bad quotes.
borg/localrole/interfaces.py:12:16: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:12:18: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:12:61: C812 missing trailing comma
borg/localrole/interfaces.py:16:6: Q000 Remove bad quotes.
borg/localrole/interfaces.py:17:26: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:17:28: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:17:80: E501 line too long (80 > 79 characters)
borg/localrole/interfaces.py:17:81: C812 missing trailing comma
borg/localrole/interfaces.py:20:1: E302 expected 2 blank lines, found 1
borg/localrole/interfaces.py:32:1: E302 expected 2 blank lines, found 1
borg/localrole/__init__.py:0:1: C101 Coding magic comment not found
borg/localrole/__init__.py:2:1: I001 isort found an import in the wrong position
borg/localrole/__init__.py:4:1: I001 isort found an import in the wrong position
borg/localrole/__init__.py:8:1: E302 expected 2 blank lines, found 1
borg/localrole/__init__.py:11:1: W293 blank line contains whitespace
borg/localrole/__init__.py:13:37: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:13:39: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:14:39: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:14:41: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:14:80: E501 line too long (92 > 79 characters)
borg/localrole/__init__.py:15:80: E501 line too long (89 > 79 characters)
borg/localrole/__init__.py:16:37: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:16:39: E251 unexpected spaces around keyword / parameter equals
borg/localrole/utils.py:0:1: C101 Coding magic comment not found
borg/localrole/utils.py:3:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:4:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:5:1: I004 isort found an unexpected blank line in imports
borg/localrole/utils.py:6:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:7:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:9:1: E302 expected 2 blank lines, found 1
borg/localrole/utils.py:13:1: W293 blank line contains whitespace
borg/localrole/utils.py:22:9: T001 print statement found.
borg/localrole/utils.py:22:23: Q000 Remove bad quotes.
borg/localrole/utils.py:22:23: S001 found module formatter
borg/localrole/utils.py:23:1: W293 blank line contains whitespace
borg/localrole/workspace.py:0:1: C101 Coding magic comment not found
borg/localrole/workspace.py:1:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:3:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:4:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:7:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:8:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:10:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:11:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:12:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:13:1: I004 isort found an unexpected blank line in imports
borg/localrole/workspace.py:14:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:15:1: I004 isort found an unexpected blank line in imports
borg/localrole/workspace.py:16:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:16:3: T000 Todo note found.
borg/localrole/workspace.py:17:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:18:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:21:9: Q000 Remove bad quotes.
borg/localrole/workspace.py:22:18: Q000 Remove bad quotes.
borg/localrole/workspace.py:24:1: E302 expected 2 blank lines, found 1
borg/localrole/workspace.py:24:80: E501 line too long (82 > 79 characters)
borg/localrole/workspace.py:25:80: E501 line too long (81 > 79 characters)
borg/localrole/workspace.py:31:17: S001 found module formatter
borg/localrole/workspace.py:31:80: E501 line too long (90 > 79 characters)
borg/localrole/workspace.py:50:1: E302 expected 2 blank lines, found 1
borg/localrole/workspace.py:74:17: D001 found implements( replace it with zope.interface.implementer
borg/localrole/workspace.py:168:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/workspace.py:169:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/workspace.py:171:17: D001 found adapts( replace it with zope.component.adapter
borg/localrole/workspace.py:175:17: D001 found adapts( replace it with zope.component.adapter
borg/localrole/workspace.py:275:17: Q000 Remove bad quotes.
borg/localrole/workspace.py:276:13: E221 multiple spaces before operator
borg/localrole/workspace.py:278:34: Q000 Remove bad quotes.
borg/localrole/workspace.py:287:16: P002 found "hasattr", consider replacing it
borg/localrole/workspace.py:323:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:323:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:324:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:341:19: T000 Todo note found.
borg/localrole/workspace.py:343:80: E501 line too long (80 > 79 characters)
borg/localrole/workspace.py:347:80: E501 line too long (84 > 79 characters)
borg/localrole/workspace.py:350:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:350:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:351:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:351:5: C901 'WorkspaceLocalRoleManager.checkLocalRolesAllowed' is too complex (17)
borg/localrole/workspace.py:375:15: T000 Todo note found.
borg/localrole/workspace.py:397:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:397:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:398:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:405:18: E261 at least two spaces before inline comment
borg/localrole/workspace.py:405:21: T000 Todo note found.
borg/localrole/workspace.py:411:1: W293 blank line contains whitespace
borg/localrole/workspace.py:412:7: T000 Todo note found.
borg/localrole/workspace.py:414:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:414:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:415:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:426:1: E305 expected 2 blank lines after class or function definition, found 1
borg/localrole/setuphandlers.py:0:1: C101 Coding magic comment not found
borg/localrole/setuphandlers.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/setuphandlers.py:3:1: E302 expected 2 blank lines, found 1
borg/localrole/setuphandlers.py:4:1: W293 blank line contains whitespace
borg/localrole/setuphandlers.py:7:1: W293 blank line contains whitespace
borg/localrole/setuphandlers.py:9:35: W292 no newline at end of file
borg/localrole/factory_adapter.py:0:1: C101 Coding magic comment not found
borg/localrole/factory_adapter.py:3:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/factory_adapter.py:3:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:4:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:5:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:6:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:8:1: E302 expected 2 blank lines, found 1
borg/localrole/factory_adapter.py:21:17: D001 found implements( replace it with zope.interface.implementer
borg/localrole/factory_adapter.py:28:68: W291 trailing whitespace
borg/localrole/factory_adapter.py:65:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/factory_adapter.py:66:80: E501 line too long (80 > 79 characters)
borg/localrole/factory_adapter.py:78:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/factory_adapter.py:92:0: P102 docstring does contain unindexed parameters
borg/localrole/factory_adapter.py:93:5: D001 found adapts( replace it with zope.component.adapter
borg/localrole/factory_adapter.py:94:5: D001 found implements( replace it with zope.interface.implementer
borg/localrole/default_adapter.py:0:1: C101 Coding magic comment not found
borg/localrole/default_adapter.py:1:1: I001 isort found an import in the wrong position
borg/localrole/default_adapter.py:3:1: I001 isort found an import in the wrong position
borg/localrole/default_adapter.py:53:5: D001 found implements( replace it with zope.interface.implementer
borg/localrole/default_adapter.py:54:5: D001 found adapts( replace it with zope.component.adapter
borg/localrole/bbb/interfaces.py:0:1: C101 Coding magic comment not found
borg/localrole/bbb/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/bbb/interfaces.py:3:3: T000 Todo note found.
borg/localrole/bbb/interfaces.py:6:1: E302 expected 2 blank lines, found 1
borg/localrole/bbb/interfaces.py:8:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:9:74: W291 trailing whitespace
borg/localrole/bbb/interfaces.py:10:72: W291 trailing whitespace
borg/localrole/bbb/interfaces.py:13:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:23:1: E302 expected 2 blank lines, found 1
borg/localrole/bbb/interfaces.py:25:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:29:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:33:8: W292 no newline at end of file
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@witsch Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-borg.localrole/10/violations
```
borg/__init__.py:0:1: C101 Coding magic comment not found
borg/__init__.py:6:36: E261 at least two spaces before inline comment
borg/localrole/config.py:0:1: C101 Coding magic comment not found
borg/localrole/config.py:3:42: W292 no newline at end of file
borg/localrole/tests.py:0:1: C101 Coding magic comment not found
borg/localrole/tests.py:1:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/tests.py:2:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:3:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:4:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:5:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:8:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:9:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:10:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:11:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:12:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:13:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:14:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:15:1: I004 isort found an unexpected blank line in imports
borg/localrole/tests.py:16:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:17:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:18:1: I001 isort found an import in the wrong position
borg/localrole/tests.py:21:15: E225 missing whitespace around operator
borg/localrole/tests.py:22:8: P002 found "hasattr", consider replacing it
borg/localrole/tests.py:27:5: D001 found implements( replace it with zope.interface.implementer
borg/localrole/tests.py:28:5: E301 expected 1 blank line, found 0
borg/localrole/tests.py:58:1: E302 expected 2 blank lines, found 1
borg/localrole/tests.py:61:1: W293 blank line contains whitespace
borg/localrole/tests.py:65:1: W293 blank line contains whitespace
borg/localrole/tests.py:67:1: W293 blank line contains whitespace
borg/localrole/tests.py:71:1: W293 blank line contains whitespace
borg/localrole/tests.py:77:1: W293 blank line contains whitespace
borg/localrole/tests.py:79:71: W291 trailing whitespace
borg/localrole/tests.py:82:1: E305 expected 2 blank lines after class or function definition, found 1
borg/localrole/tests.py:85:1: E302 expected 2 blank lines, found 1
borg/localrole/tests.py:106:13: E128 continuation line under-indented for visual indent
borg/localrole/tests.py:109:25: E131 continuation line unaligned for hanging indent
borg/localrole/tests.py:116:5: E303 too many blank lines (2)
borg/localrole/tests.py:118:1: E305 expected 2 blank lines after class or function definition, found 1
borg/localrole/interfaces.py:0:1: C101 Coding magic comment not found
borg/localrole/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/interfaces.py:11:6: Q000 Remove bad quotes.
borg/localrole/interfaces.py:12:16: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:12:18: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:12:61: C812 missing trailing comma
borg/localrole/interfaces.py:16:6: Q000 Remove bad quotes.
borg/localrole/interfaces.py:17:26: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:17:28: E251 unexpected spaces around keyword / parameter equals
borg/localrole/interfaces.py:17:80: E501 line too long (80 > 79 characters)
borg/localrole/interfaces.py:17:81: C812 missing trailing comma
borg/localrole/interfaces.py:20:1: E302 expected 2 blank lines, found 1
borg/localrole/interfaces.py:32:1: E302 expected 2 blank lines, found 1
borg/localrole/__init__.py:0:1: C101 Coding magic comment not found
borg/localrole/__init__.py:2:1: I001 isort found an import in the wrong position
borg/localrole/__init__.py:4:1: I001 isort found an import in the wrong position
borg/localrole/__init__.py:8:1: E302 expected 2 blank lines, found 1
borg/localrole/__init__.py:11:1: W293 blank line contains whitespace
borg/localrole/__init__.py:13:37: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:13:39: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:14:39: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:14:41: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:14:80: E501 line too long (92 > 79 characters)
borg/localrole/__init__.py:15:80: E501 line too long (89 > 79 characters)
borg/localrole/__init__.py:16:37: E251 unexpected spaces around keyword / parameter equals
borg/localrole/__init__.py:16:39: E251 unexpected spaces around keyword / parameter equals
borg/localrole/utils.py:0:1: C101 Coding magic comment not found
borg/localrole/utils.py:3:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:4:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:5:1: I004 isort found an unexpected blank line in imports
borg/localrole/utils.py:6:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:7:1: I001 isort found an import in the wrong position
borg/localrole/utils.py:9:1: E302 expected 2 blank lines, found 1
borg/localrole/utils.py:13:1: W293 blank line contains whitespace
borg/localrole/utils.py:22:9: T001 print statement found.
borg/localrole/utils.py:22:23: Q000 Remove bad quotes.
borg/localrole/utils.py:22:23: S001 found module formatter
borg/localrole/utils.py:23:1: W293 blank line contains whitespace
borg/localrole/workspace.py:0:1: C101 Coding magic comment not found
borg/localrole/workspace.py:1:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:3:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:4:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:7:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:8:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:10:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:11:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:12:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:13:1: I004 isort found an unexpected blank line in imports
borg/localrole/workspace.py:14:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:15:1: I004 isort found an unexpected blank line in imports
borg/localrole/workspace.py:16:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:16:3: T000 Todo note found.
borg/localrole/workspace.py:17:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:18:1: I001 isort found an import in the wrong position
borg/localrole/workspace.py:21:9: Q000 Remove bad quotes.
borg/localrole/workspace.py:22:18: Q000 Remove bad quotes.
borg/localrole/workspace.py:24:1: E302 expected 2 blank lines, found 1
borg/localrole/workspace.py:24:80: E501 line too long (82 > 79 characters)
borg/localrole/workspace.py:25:80: E501 line too long (81 > 79 characters)
borg/localrole/workspace.py:31:17: S001 found module formatter
borg/localrole/workspace.py:31:80: E501 line too long (90 > 79 characters)
borg/localrole/workspace.py:47:19: D001 found implements( replace it with zope.interface.implementer
borg/localrole/workspace.py:111:80: E501 line too long (99 > 79 characters)
borg/localrole/workspace.py:119:0: P102 docstring does contain unindexed parameters
borg/localrole/workspace.py:129:1: E302 expected 2 blank lines, found 1
borg/localrole/workspace.py:153:17: D001 found implements( replace it with zope.interface.implementer
borg/localrole/workspace.py:247:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/workspace.py:248:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/workspace.py:250:17: D001 found adapts( replace it with zope.component.adapter
borg/localrole/workspace.py:254:17: D001 found adapts( replace it with zope.component.adapter
borg/localrole/workspace.py:354:17: Q000 Remove bad quotes.
borg/localrole/workspace.py:355:13: E221 multiple spaces before operator
borg/localrole/workspace.py:357:34: Q000 Remove bad quotes.
borg/localrole/workspace.py:366:16: P002 found "hasattr", consider replacing it
borg/localrole/workspace.py:402:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:402:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:403:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:420:19: T000 Todo note found.
borg/localrole/workspace.py:422:80: E501 line too long (80 > 79 characters)
borg/localrole/workspace.py:426:80: E501 line too long (84 > 79 characters)
borg/localrole/workspace.py:429:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:429:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:430:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:430:5: C901 'WorkspaceLocalRoleManager.checkLocalRolesAllowed' is too complex (17)
borg/localrole/workspace.py:454:15: T000 Todo note found.
borg/localrole/workspace.py:476:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:476:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:477:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:484:18: E261 at least two spaces before inline comment
borg/localrole/workspace.py:484:21: T000 Todo note found.
borg/localrole/workspace.py:490:1: W293 blank line contains whitespace
borg/localrole/workspace.py:491:7: T000 Todo note found.
borg/localrole/workspace.py:493:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
borg/localrole/workspace.py:493:29: Q000 Remove bad quotes.
borg/localrole/workspace.py:494:5: E301 expected 1 blank line, found 0
borg/localrole/workspace.py:505:1: E305 expected 2 blank lines after class or function definition, found 1
borg/localrole/setuphandlers.py:0:1: C101 Coding magic comment not found
borg/localrole/setuphandlers.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/setuphandlers.py:3:1: E302 expected 2 blank lines, found 1
borg/localrole/setuphandlers.py:4:1: W293 blank line contains whitespace
borg/localrole/setuphandlers.py:7:1: W293 blank line contains whitespace
borg/localrole/setuphandlers.py:9:35: W292 no newline at end of file
borg/localrole/factory_adapter.py:0:1: C101 Coding magic comment not found
borg/localrole/factory_adapter.py:3:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/factory_adapter.py:3:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:4:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:5:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:6:1: I001 isort found an import in the wrong position
borg/localrole/factory_adapter.py:8:1: E302 expected 2 blank lines, found 1
borg/localrole/factory_adapter.py:21:17: D001 found implements( replace it with zope.interface.implementer
borg/localrole/factory_adapter.py:28:68: W291 trailing whitespace
borg/localrole/factory_adapter.py:65:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/factory_adapter.py:66:80: E501 line too long (80 > 79 characters)
borg/localrole/factory_adapter.py:78:13: D001 found directlyProvides( replace it with zope.interface.provider
borg/localrole/factory_adapter.py:92:0: P102 docstring does contain unindexed parameters
borg/localrole/factory_adapter.py:93:5: D001 found adapts( replace it with zope.component.adapter
borg/localrole/factory_adapter.py:94:5: D001 found implements( replace it with zope.interface.implementer
borg/localrole/default_adapter.py:0:1: C101 Coding magic comment not found
borg/localrole/default_adapter.py:1:1: I001 isort found an import in the wrong position
borg/localrole/default_adapter.py:3:1: I001 isort found an import in the wrong position
borg/localrole/default_adapter.py:53:5: D001 found implements( replace it with zope.interface.implementer
borg/localrole/default_adapter.py:54:5: D001 found adapts( replace it with zope.component.adapter
borg/localrole/bbb/interfaces.py:0:1: C101 Coding magic comment not found
borg/localrole/bbb/interfaces.py:2:1: I003 isort expected 1 blank line in imports, found 0
borg/localrole/bbb/interfaces.py:3:3: T000 Todo note found.
borg/localrole/bbb/interfaces.py:6:1: E302 expected 2 blank lines, found 1
borg/localrole/bbb/interfaces.py:8:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:9:74: W291 trailing whitespace
borg/localrole/bbb/interfaces.py:10:72: W291 trailing whitespace
borg/localrole/bbb/interfaces.py:13:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:23:1: E302 expected 2 blank lines, found 1
borg/localrole/bbb/interfaces.py:25:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:29:1: W293 blank line contains whitespace
borg/localrole/bbb/interfaces.py:33:8: W292 no newline at end of file
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.