@zupo Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.api/3/violations
```
src/plone/api/content.py:4:1: I001 isort found an import in the wrong position
src/plone/api/content.py:5:1: I001 isort found an import in the wrong position
src/plone/api/content.py:6:1: I001 isort found an import in the wrong position
src/plone/api/content.py:77:21: S001 found module formatter
src/plone/api/content.py:82:13: Q000 Remove bad quotes.
src/plone/api/content.py:83:13: Q000 Remove bad quotes.
src/plone/api/content.py:292:13: Q000 Remove bad quotes.
src/plone/api/content.py:293:13: Q000 Remove bad quotes.
src/plone/api/content.py:315:5: B901 blind except: statement
src/plone/api/content.py:327:13: Q000 Remove bad quotes.
src/plone/api/content.py:328:13: Q000 Remove bad quotes.
src/plone/api/portal.py:5:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:6:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:7:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:21:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/portal.py:52:9: Q000 Remove bad quotes.
src/plone/api/portal.py:53:9: Q000 Remove bad quotes.
src/plone/api/portal.py:54:9: Q000 Remove bad quotes.
src/plone/api/portal.py:100:13: Q000 Remove bad quotes.
src/plone/api/portal.py:101:13: Q000 Remove bad quotes.
src/plone/api/portal.py:221:37: Q000 Remove bad quotes.
src/plone/api/portal.py:224:8: E713 test for membership should be 'not in'
src/plone/api/portal.py:230:13: Q000 Remove bad quotes.
src/plone/api/portal.py:231:13: Q000 Remove bad quotes.
src/plone/api/env.py:4:1: I001 isort found an import in the wrong position
src/plone/api/env.py:9:1: I001 isort found an import in the wrong position
src/plone/api/user.py:65:13: Q000 Remove bad quotes.
src/plone/api/user.py:66:13: Q000 Remove bad quotes.
src/plone/api/validation.py:20:13: Q000 Remove bad quotes.
src/plone/api/validation.py:21:13: Q000 Remove bad quotes.
src/plone/api/validation.py:22:32: Q000 Remove bad quotes.
src/plone/api/validation.py:66:21: Q000 Remove bad quotes.
src/plone/api/validation.py:67:25: Q000 Remove bad quotes.
src/plone/api/validation.py:96:21: Q000 Remove bad quotes.
src/plone/api/validation.py:97:25: Q000 Remove bad quotes.
src/plone/api/validation.py:127:21: Q000 Remove bad quotes.
src/plone/api/validation.py:128:21: Q000 Remove bad quotes.
src/plone/api/validation.py:128:45: Q000 Remove bad quotes.
src/plone/api/tests/test_validation.py:37:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:40:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:63:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:68:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:72:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:77:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:82:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:89:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:96:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:119:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:120:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:127:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:128:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:129:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:152:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:153:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:158:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:159:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:160:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/base.py:10:1: I001 isort found an import in the wrong position
src/plone/api/tests/base.py:11:1: I001 isort found an import in the wrong position
src/plone/api/tests/base.py:43:28: Q000 Remove bad quotes.
src/plone/api/tests/base.py:45:28: Q000 Remove bad quotes.
src/plone/api/tests/test_user.py:525:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:5:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:6:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:7:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:36:16: P002 found "hasattr", consider replacing it
src/plone/api/tests/test_portal.py:61:41: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:61:57: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:97:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:98:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:99:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:100:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:101:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:102:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:103:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:104:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:105:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:106:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:107:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:108:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:109:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:110:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:111:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:112:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:113:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:114:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:115:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:116:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:117:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:118:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:119:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:120:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:121:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:122:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:123:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:124:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:125:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:126:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:127:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:157:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:169:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:178:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:179:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:180:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:181:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:194:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:195:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:196:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:211:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:212:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:213:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:214:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:227:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:228:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:229:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:339:34: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:375:17: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:382:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:383:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:384:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:385:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:441:19: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:16:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_content.py:135:9: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:487:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:488:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:489:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:594:17: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:603:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:604:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:605:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:606:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:607:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:608:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:609:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:610:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:611:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:612:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:613:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:614:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:615:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:616:13: Q000 Remove bad quotes.
src/plone/api/tests/test_group.py:4:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_env.py:30:14: D001 found declarePublic( replace it with AccessControl.ClassSecurityInfo.public
src/plone/api/tests/test_env.py:31:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:32:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:33:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:34:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
src/plone/api/tests/test_doctests.py:6:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_doctests.py:22:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_doctests.py:108:13: T001 print statement found.
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@thet Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.api/4/violations
```
src/plone/__init__.py:0:1: C101 Coding magic comment not found
src/plone/api/content.py:77:13: Q000 Remove bad quotes.
src/plone/api/content.py:78:13: Q000 Remove bad quotes.
src/plone/api/content.py:287:13: Q000 Remove bad quotes.
src/plone/api/content.py:288:13: Q000 Remove bad quotes.
src/plone/api/content.py:310:5: B901 blind except: statement
src/plone/api/content.py:322:13: Q000 Remove bad quotes.
src/plone/api/content.py:323:13: Q000 Remove bad quotes.
src/plone/api/portal.py:5:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:6:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:7:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:19:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/portal.py:20:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/portal.py:51:9: Q000 Remove bad quotes.
src/plone/api/portal.py:52:9: Q000 Remove bad quotes.
src/plone/api/portal.py:53:9: Q000 Remove bad quotes.
src/plone/api/portal.py:99:13: Q000 Remove bad quotes.
src/plone/api/portal.py:100:13: Q000 Remove bad quotes.
src/plone/api/portal.py:220:37: Q000 Remove bad quotes.
src/plone/api/portal.py:223:8: E713 test for membership should be 'not in'
src/plone/api/portal.py:229:13: Q000 Remove bad quotes.
src/plone/api/portal.py:230:13: Q000 Remove bad quotes.
src/plone/api/__init__.py:0:1: C101 Coding magic comment not found
src/plone/api/env.py:0:1: C101 Coding magic comment not found
src/plone/api/env.py:3:1: I001 isort found an import in the wrong position
src/plone/api/env.py:8:1: I001 isort found an import in the wrong position
src/plone/api/user.py:65:13: Q000 Remove bad quotes.
src/plone/api/user.py:66:13: Q000 Remove bad quotes.
src/plone/api/validation.py:4:1: I001 isort found an import in the wrong position
src/plone/api/validation.py:8:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/validation.py:19:13: Q000 Remove bad quotes.
src/plone/api/validation.py:20:13: Q000 Remove bad quotes.
src/plone/api/validation.py:21:32: Q000 Remove bad quotes.
src/plone/api/validation.py:65:21: Q000 Remove bad quotes.
src/plone/api/validation.py:66:25: Q000 Remove bad quotes.
src/plone/api/validation.py:95:21: Q000 Remove bad quotes.
src/plone/api/validation.py:96:25: Q000 Remove bad quotes.
src/plone/api/validation.py:126:21: Q000 Remove bad quotes.
src/plone/api/validation.py:127:21: Q000 Remove bad quotes.
src/plone/api/validation.py:127:45: Q000 Remove bad quotes.
src/plone/api/tests/test_validation.py:37:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:40:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:63:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:68:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:72:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:77:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:82:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:89:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:96:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:119:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:120:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:127:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:128:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:129:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:152:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:153:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:158:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:159:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:160:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/base.py:26:80: E501 line too long (80 > 79 characters)
src/plone/api/tests/base.py:48:28: Q000 Remove bad quotes.
src/plone/api/tests/base.py:50:28: Q000 Remove bad quotes.
src/plone/api/tests/test_user.py:7:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_user.py:524:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:36:16: P002 found "hasattr", consider replacing it
src/plone/api/tests/test_portal.py:61:41: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:61:57: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:97:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:98:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:99:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:100:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:101:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:102:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:103:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:104:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:105:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:106:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:107:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:108:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:109:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:110:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:111:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:112:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:113:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:114:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:115:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:116:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:117:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:118:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:119:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:120:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:121:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:122:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:123:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:124:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:125:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:126:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:127:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:157:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:169:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:178:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:179:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:180:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:181:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:194:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:195:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:196:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:211:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:212:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:213:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:214:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:227:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:228:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:229:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:339:34: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:375:17: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:382:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:383:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:384:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:385:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:441:19: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:16:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_content.py:135:9: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:487:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:488:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:489:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:594:17: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:603:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:604:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:605:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:606:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:607:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:608:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:609:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:610:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:611:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:612:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:613:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:614:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:615:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:616:13: Q000 Remove bad quotes.
src/plone/api/tests/test_env.py:8:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_env.py:29:14: D001 found declarePublic( replace it with AccessControl.ClassSecurityInfo.public
src/plone/api/tests/test_env.py:30:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:31:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:32:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:33:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
src/plone/api/tests/test_doctests.py:22:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_doctests.py:108:13: T001 print statement found.
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@jaroel Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.api/5/violations
```
src/plone/__init__.py:0:1: C101 Coding magic comment not found
src/plone/api/content.py:4:1: I001 isort found an import in the wrong position
src/plone/api/content.py:5:1: I001 isort found an import in the wrong position
src/plone/api/content.py:6:1: I001 isort found an import in the wrong position
src/plone/api/content.py:77:21: S001 found module formatter
src/plone/api/content.py:82:13: Q000 Remove bad quotes.
src/plone/api/content.py:83:13: Q000 Remove bad quotes.
src/plone/api/content.py:84:13: Q000 Remove bad quotes.
src/plone/api/content.py:297:13: Q000 Remove bad quotes.
src/plone/api/content.py:298:13: Q000 Remove bad quotes.
src/plone/api/content.py:320:5: B901 blind except: statement
src/plone/api/content.py:332:13: Q000 Remove bad quotes.
src/plone/api/content.py:333:13: Q000 Remove bad quotes.
src/plone/api/portal.py:5:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:6:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:7:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:21:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/portal.py:52:9: Q000 Remove bad quotes.
src/plone/api/portal.py:53:9: Q000 Remove bad quotes.
src/plone/api/portal.py:54:9: Q000 Remove bad quotes.
src/plone/api/portal.py:100:13: Q000 Remove bad quotes.
src/plone/api/portal.py:101:13: Q000 Remove bad quotes.
src/plone/api/portal.py:221:37: Q000 Remove bad quotes.
src/plone/api/portal.py:224:8: E713 test for membership should be 'not in'
src/plone/api/portal.py:230:13: Q000 Remove bad quotes.
src/plone/api/portal.py:231:13: Q000 Remove bad quotes.
src/plone/api/__init__.py:0:1: C101 Coding magic comment not found
src/plone/api/env.py:0:1: C101 Coding magic comment not found
src/plone/api/env.py:3:1: I001 isort found an import in the wrong position
src/plone/api/env.py:8:1: I001 isort found an import in the wrong position
src/plone/api/user.py:65:13: Q000 Remove bad quotes.
src/plone/api/user.py:66:13: Q000 Remove bad quotes.
src/plone/api/validation.py:20:13: Q000 Remove bad quotes.
src/plone/api/validation.py:21:13: Q000 Remove bad quotes.
src/plone/api/validation.py:22:32: Q000 Remove bad quotes.
src/plone/api/validation.py:66:21: Q000 Remove bad quotes.
src/plone/api/validation.py:67:25: Q000 Remove bad quotes.
src/plone/api/validation.py:96:21: Q000 Remove bad quotes.
src/plone/api/validation.py:97:25: Q000 Remove bad quotes.
src/plone/api/validation.py:127:21: Q000 Remove bad quotes.
src/plone/api/validation.py:128:21: Q000 Remove bad quotes.
src/plone/api/validation.py:128:45: Q000 Remove bad quotes.
src/plone/api/tests/test_validation.py:37:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:40:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:63:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:68:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:72:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:77:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:82:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:89:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:96:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:119:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:120:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:127:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:128:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:129:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:152:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:153:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:158:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:159:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:160:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/base.py:10:1: I001 isort found an import in the wrong position
src/plone/api/tests/base.py:11:1: I001 isort found an import in the wrong position
src/plone/api/tests/base.py:43:28: Q000 Remove bad quotes.
src/plone/api/tests/base.py:45:28: Q000 Remove bad quotes.
src/plone/api/tests/test_user.py:7:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_user.py:524:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:5:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:6:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:7:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:36:16: P002 found "hasattr", consider replacing it
src/plone/api/tests/test_portal.py:61:41: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:61:57: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:97:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:98:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:99:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:100:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:101:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:102:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:103:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:104:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:105:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:106:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:107:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:108:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:109:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:110:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:111:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:112:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:113:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:114:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:115:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:116:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:117:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:118:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:119:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:120:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:121:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:122:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:123:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:124:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:125:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:126:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:127:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:157:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:169:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:178:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:179:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:180:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:181:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:194:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:195:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:196:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:211:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:212:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:213:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:214:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:227:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:228:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:229:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:339:34: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:375:17: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:382:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:383:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:384:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:385:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:441:19: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:16:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_content.py:119:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:141:9: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:497:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:498:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:499:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:604:17: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:613:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:614:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:615:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:616:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:617:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:618:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:619:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:620:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:621:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:622:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:623:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:624:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:625:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:626:13: Q000 Remove bad quotes.
src/plone/api/tests/test_group.py:4:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_env.py:30:14: D001 found declarePublic( replace it with AccessControl.ClassSecurityInfo.public
src/plone/api/tests/test_env.py:31:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:32:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:33:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:34:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
src/plone/api/tests/test_doctests.py:6:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_doctests.py:22:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_doctests.py:108:13: T001 print statement found.
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@jaroel Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.api/6/violations
```
src/plone/api/content.py:4:1: I001 isort found an import in the wrong position
src/plone/api/content.py:5:1: I001 isort found an import in the wrong position
src/plone/api/content.py:23:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/content.py:90:21: S001 found module formatter
src/plone/api/content.py:95:13: Q000 Remove bad quotes.
src/plone/api/content.py:96:13: Q000 Remove bad quotes.
src/plone/api/content.py:97:13: Q000 Remove bad quotes.
src/plone/api/content.py:301:1: C901 '_wf_transitions_for' is too complex (12)
src/plone/api/content.py:393:17: Q000 Remove bad quotes.
src/plone/api/content.py:394:17: Q000 Remove bad quotes.
src/plone/api/content.py:421:17: Q000 Remove bad quotes.
src/plone/api/content.py:460:13: Q000 Remove bad quotes.
src/plone/api/content.py:461:13: Q000 Remove bad quotes.
src/plone/api/portal.py:5:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:6:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:7:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:9:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:23:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/portal.py:54:9: Q000 Remove bad quotes.
src/plone/api/portal.py:55:9: Q000 Remove bad quotes.
src/plone/api/portal.py:56:9: Q000 Remove bad quotes.
src/plone/api/portal.py:102:13: Q000 Remove bad quotes.
src/plone/api/portal.py:103:13: Q000 Remove bad quotes.
src/plone/api/portal.py:241:37: Q000 Remove bad quotes.
src/plone/api/portal.py:250:13: Q000 Remove bad quotes.
src/plone/api/portal.py:251:13: Q000 Remove bad quotes.
src/plone/api/env.py:18:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/user.py:5:1: I001 isort found an import in the wrong position
src/plone/api/user.py:66:13: Q000 Remove bad quotes.
src/plone/api/user.py:67:13: Q000 Remove bad quotes.
src/plone/api/user.py:353:37: Q000 Remove bad quotes.
src/plone/api/user.py:396:37: Q000 Remove bad quotes.
src/plone/api/validation.py:20:13: Q000 Remove bad quotes.
src/plone/api/validation.py:21:13: Q000 Remove bad quotes.
src/plone/api/validation.py:22:32: Q000 Remove bad quotes.
src/plone/api/validation.py:66:21: Q000 Remove bad quotes.
src/plone/api/validation.py:67:25: Q000 Remove bad quotes.
src/plone/api/validation.py:96:21: Q000 Remove bad quotes.
src/plone/api/validation.py:97:25: Q000 Remove bad quotes.
src/plone/api/validation.py:127:21: Q000 Remove bad quotes.
src/plone/api/validation.py:128:21: Q000 Remove bad quotes.
src/plone/api/validation.py:128:45: Q000 Remove bad quotes.
src/plone/api/tests/test_validation.py:37:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:40:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:65:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:70:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:74:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:79:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:84:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:91:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:98:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:123:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:124:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:131:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:132:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:133:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:159:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:160:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:165:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:166:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:167:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/base.py:10:1: I001 isort found an import in the wrong position
src/plone/api/tests/base.py:11:1: I001 isort found an import in the wrong position
src/plone/api/tests/base.py:23:47: Q000 Remove bad quotes.
src/plone/api/tests/base.py:43:28: Q000 Remove bad quotes.
src/plone/api/tests/base.py:45:28: Q000 Remove bad quotes.
src/plone/api/tests/test_user.py:9:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_user.py:636:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:5:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:6:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:7:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:39:16: P002 found "hasattr", consider replacing it
src/plone/api/tests/test_portal.py:98:41: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:98:57: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:136:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:137:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:138:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:139:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:140:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:141:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:142:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:143:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:144:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:145:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:146:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:147:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:148:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:149:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:150:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:151:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:152:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:153:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:154:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:155:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:156:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:157:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:158:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:159:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:160:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:161:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:162:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:163:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:164:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:165:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:166:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:196:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:206:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:215:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:216:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:217:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:218:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:231:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:232:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:233:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:247:27: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:248:24: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:249:25: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:250:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:263:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:264:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:265:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:277:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:278:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:279:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:288:38: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:291:38: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:297:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:298:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:299:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:434:34: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:470:17: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:477:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:478:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:479:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:480:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:534:23: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:8:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:9:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:19:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:20:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:21:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:26:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_content.py:133:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:154:9: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:195:9: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:260:37: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:731:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:732:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:733:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:867:17: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:876:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:877:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:878:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:879:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:880:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:881:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:882:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:883:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:884:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:885:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:886:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:887:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:888:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:889:13: Q000 Remove bad quotes.
src/plone/api/tests/test_group.py:4:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_env.py:9:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_env.py:30:14: D001 found declarePublic( replace it with AccessControl.ClassSecurityInfo.public
src/plone/api/tests/test_env.py:31:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:32:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:33:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:34:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
src/plone/api/tests/test_doctests.py:6:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_doctests.py:22:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_doctests.py:108:13: T001 print statement found.
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@jaroel Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.api/7/violations
```
src/plone/api/content.py:5:1: I001 isort found an import in the wrong position
src/plone/api/content.py:23:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/content.py:78:28: S001 found module formatter
src/plone/api/content.py:97:13: Q000 Remove bad quotes.
src/plone/api/content.py:98:13: Q000 Remove bad quotes.
src/plone/api/content.py:99:13: Q000 Remove bad quotes.
src/plone/api/content.py:310:1: C901 '_wf_transitions_for' is too complex (12)
src/plone/api/content.py:402:17: Q000 Remove bad quotes.
src/plone/api/content.py:403:17: Q000 Remove bad quotes.
src/plone/api/content.py:430:17: Q000 Remove bad quotes.
src/plone/api/content.py:469:13: Q000 Remove bad quotes.
src/plone/api/content.py:470:13: Q000 Remove bad quotes.
src/plone/api/portal.py:5:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:6:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:7:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:9:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:23:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/portal.py:65:9: Q000 Remove bad quotes.
src/plone/api/portal.py:66:9: Q000 Remove bad quotes.
src/plone/api/portal.py:67:9: Q000 Remove bad quotes.
src/plone/api/portal.py:113:13: Q000 Remove bad quotes.
src/plone/api/portal.py:114:13: Q000 Remove bad quotes.
src/plone/api/portal.py:254:37: Q000 Remove bad quotes.
src/plone/api/portal.py:264:17: Q000 Remove bad quotes.
src/plone/api/portal.py:265:17: Q000 Remove bad quotes.
src/plone/api/env.py:18:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/user.py:5:1: I001 isort found an import in the wrong position
src/plone/api/user.py:66:13: Q000 Remove bad quotes.
src/plone/api/user.py:67:13: Q000 Remove bad quotes.
src/plone/api/user.py:353:37: Q000 Remove bad quotes.
src/plone/api/user.py:396:37: Q000 Remove bad quotes.
src/plone/api/validation.py:20:13: Q000 Remove bad quotes.
src/plone/api/validation.py:21:13: Q000 Remove bad quotes.
src/plone/api/validation.py:22:32: Q000 Remove bad quotes.
src/plone/api/validation.py:66:21: Q000 Remove bad quotes.
src/plone/api/validation.py:67:25: Q000 Remove bad quotes.
src/plone/api/validation.py:96:21: Q000 Remove bad quotes.
src/plone/api/validation.py:97:25: Q000 Remove bad quotes.
src/plone/api/validation.py:127:21: Q000 Remove bad quotes.
src/plone/api/validation.py:128:21: Q000 Remove bad quotes.
src/plone/api/validation.py:128:45: Q000 Remove bad quotes.
src/plone/api/tests/test_validation.py:37:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:40:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:65:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:70:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:74:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:79:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:84:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:91:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:98:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:123:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:124:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:131:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:132:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:133:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:159:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:160:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:165:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:166:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:167:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/base.py:4:1: I001 isort found an import in the wrong position
src/plone/api/tests/base.py:11:1: I001 isort found an import in the wrong position
src/plone/api/tests/base.py:12:1: I001 isort found an import in the wrong position
src/plone/api/tests/base.py:13:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/base.py:32:47: Q000 Remove bad quotes.
src/plone/api/tests/base.py:60:28: Q000 Remove bad quotes.
src/plone/api/tests/base.py:62:28: Q000 Remove bad quotes.
src/plone/api/tests/test_user.py:9:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_user.py:636:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:5:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:6:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:7:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:25:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_portal.py:41:16: P002 found "hasattr", consider replacing it
src/plone/api/tests/test_portal.py:105:41: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:105:57: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:143:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:144:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:174:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:184:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:193:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:194:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:195:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:196:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:209:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:210:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:211:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:231:27: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:232:24: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:233:25: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:234:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:252:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:253:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:254:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:259:9: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:269:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:270:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:271:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:279:9: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:291:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:292:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:293:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:316:27: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:317:24: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:318:25: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:319:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:325:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:326:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:327:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:328:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:467:34: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:504:44: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:515:44: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:524:44: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:575:23: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:9:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:10:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:11:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:21:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:22:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:23:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:28:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_content.py:132:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:281:37: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:768:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:769:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:770:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:904:17: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:913:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:914:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:915:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:916:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:917:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:918:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:919:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:920:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:921:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:922:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:923:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:924:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:925:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:926:13: Q000 Remove bad quotes.
src/plone/api/tests/test_group.py:4:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_env.py:9:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_env.py:30:14: D001 found declarePublic( replace it with AccessControl.ClassSecurityInfo.public
src/plone/api/tests/test_env.py:31:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:32:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:33:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:34:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
src/plone/api/tests/test_doctests.py:4:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_doctests.py:7:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_doctests.py:23:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_doctests.py:120:13: T001 print statement found.
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


Isn't there a missing `titleize` ?


@jaroel Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.api/8/violations
```
src/plone/api/content.py:4:1: I001 isort found an import in the wrong position
src/plone/api/content.py:22:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/content.py:87:13: Q000 Remove bad quotes.
src/plone/api/content.py:88:13: Q000 Remove bad quotes.
src/plone/api/content.py:89:13: Q000 Remove bad quotes.
src/plone/api/content.py:300:1: C901 '_wf_transitions_for' is too complex (12)
src/plone/api/content.py:392:17: Q000 Remove bad quotes.
src/plone/api/content.py:393:17: Q000 Remove bad quotes.
src/plone/api/content.py:420:17: Q000 Remove bad quotes.
src/plone/api/content.py:459:13: Q000 Remove bad quotes.
src/plone/api/content.py:460:13: Q000 Remove bad quotes.
src/plone/api/portal.py:5:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:6:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:7:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:9:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:23:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/portal.py:65:9: Q000 Remove bad quotes.
src/plone/api/portal.py:66:9: Q000 Remove bad quotes.
src/plone/api/portal.py:67:9: Q000 Remove bad quotes.
src/plone/api/portal.py:113:13: Q000 Remove bad quotes.
src/plone/api/portal.py:114:13: Q000 Remove bad quotes.
src/plone/api/portal.py:254:37: Q000 Remove bad quotes.
src/plone/api/portal.py:264:17: Q000 Remove bad quotes.
src/plone/api/portal.py:265:17: Q000 Remove bad quotes.
src/plone/api/env.py:18:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/user.py:5:1: I001 isort found an import in the wrong position
src/plone/api/user.py:66:13: Q000 Remove bad quotes.
src/plone/api/user.py:67:13: Q000 Remove bad quotes.
src/plone/api/user.py:354:37: Q000 Remove bad quotes.
src/plone/api/user.py:397:37: Q000 Remove bad quotes.
src/plone/api/validation.py:20:13: Q000 Remove bad quotes.
src/plone/api/validation.py:21:13: Q000 Remove bad quotes.
src/plone/api/validation.py:22:32: Q000 Remove bad quotes.
src/plone/api/validation.py:66:21: Q000 Remove bad quotes.
src/plone/api/validation.py:67:25: Q000 Remove bad quotes.
src/plone/api/validation.py:96:21: Q000 Remove bad quotes.
src/plone/api/validation.py:97:25: Q000 Remove bad quotes.
src/plone/api/validation.py:127:21: Q000 Remove bad quotes.
src/plone/api/validation.py:128:21: Q000 Remove bad quotes.
src/plone/api/validation.py:128:45: Q000 Remove bad quotes.
src/plone/api/tests/test_validation.py:37:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:40:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:65:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:70:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:74:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:79:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:84:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:91:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:98:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:123:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:124:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:131:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:132:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:133:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:159:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:160:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:165:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:166:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:167:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/base.py:4:1: I001 isort found an import in the wrong position
src/plone/api/tests/base.py:11:1: I001 isort found an import in the wrong position
src/plone/api/tests/base.py:12:1: I001 isort found an import in the wrong position
src/plone/api/tests/base.py:13:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/base.py:32:47: Q000 Remove bad quotes.
src/plone/api/tests/base.py:60:28: Q000 Remove bad quotes.
src/plone/api/tests/base.py:62:28: Q000 Remove bad quotes.
src/plone/api/tests/test_user.py:9:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_user.py:635:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:5:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:6:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:7:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:25:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_portal.py:41:16: P002 found "hasattr", consider replacing it
src/plone/api/tests/test_portal.py:105:41: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:105:57: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:143:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:144:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:174:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:184:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:193:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:194:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:195:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:196:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:209:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:210:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:211:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:231:27: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:232:24: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:233:25: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:234:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:252:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:253:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:254:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:259:9: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:269:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:270:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:271:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:279:9: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:291:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:292:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:293:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:316:27: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:317:24: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:318:25: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:319:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:325:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:326:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:327:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:328:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:467:34: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:504:44: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:515:44: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:524:44: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:575:23: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:8:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:9:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:10:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:20:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:21:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:22:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:27:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_content.py:131:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:265:37: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:752:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:753:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:754:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:888:17: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:897:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:898:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:899:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:900:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:901:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:902:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:903:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:904:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:905:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:906:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:907:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:908:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:909:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:910:13: Q000 Remove bad quotes.
src/plone/api/tests/test_group.py:4:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_group.py:120:56: Q000 Remove bad quotes.
src/plone/api/tests/test_env.py:9:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_env.py:30:14: D001 found declarePublic( replace it with AccessControl.ClassSecurityInfo.public
src/plone/api/tests/test_env.py:31:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:32:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:33:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:34:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
src/plone/api/tests/test_doctests.py:4:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_doctests.py:7:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_doctests.py:23:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_doctests.py:120:13: T001 print statement found.
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@mauritsvanrees Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.api/9/violations
```
src/plone/api/content.py:4:1: I001 isort found an import in the wrong position
src/plone/api/content.py:14:1: I001 isort found an import in the wrong position
src/plone/api/content.py:15:1: I001 isort found an import in the wrong position
src/plone/api/content.py:26:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/content.py:98:13: Q000 Remove bad quotes.
src/plone/api/content.py:99:13: Q000 Remove bad quotes.
src/plone/api/content.py:100:13: Q000 Remove bad quotes.
src/plone/api/content.py:268:1: C901 'delete' is too complex (15)
src/plone/api/content.py:300:25: Q000 Remove bad quotes.
src/plone/api/content.py:322:25: Q000 Remove bad quotes.
src/plone/api/content.py:360:1: C901 '_wf_transitions_for' is too complex (12)
src/plone/api/content.py:454:17: Q000 Remove bad quotes.
src/plone/api/content.py:455:17: Q000 Remove bad quotes.
src/plone/api/content.py:482:17: Q000 Remove bad quotes.
src/plone/api/content.py:521:13: Q000 Remove bad quotes.
src/plone/api/content.py:522:13: Q000 Remove bad quotes.
src/plone/api/portal.py:5:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:6:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:7:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:9:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:23:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/portal.py:65:9: Q000 Remove bad quotes.
src/plone/api/portal.py:66:9: Q000 Remove bad quotes.
src/plone/api/portal.py:67:9: Q000 Remove bad quotes.
src/plone/api/portal.py:113:13: Q000 Remove bad quotes.
src/plone/api/portal.py:114:13: Q000 Remove bad quotes.
src/plone/api/portal.py:262:37: Q000 Remove bad quotes.
src/plone/api/portal.py:272:17: Q000 Remove bad quotes.
src/plone/api/portal.py:273:17: Q000 Remove bad quotes.
src/plone/api/env.py:18:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/user.py:5:1: I001 isort found an import in the wrong position
src/plone/api/user.py:70:13: Q000 Remove bad quotes.
src/plone/api/user.py:71:13: Q000 Remove bad quotes.
src/plone/api/user.py:357:37: Q000 Remove bad quotes.
src/plone/api/user.py:400:37: Q000 Remove bad quotes.
src/plone/api/validation.py:20:13: Q000 Remove bad quotes.
src/plone/api/validation.py:21:13: Q000 Remove bad quotes.
src/plone/api/validation.py:22:32: Q000 Remove bad quotes.
src/plone/api/validation.py:66:21: Q000 Remove bad quotes.
src/plone/api/validation.py:67:25: Q000 Remove bad quotes.
src/plone/api/validation.py:96:21: Q000 Remove bad quotes.
src/plone/api/validation.py:97:25: Q000 Remove bad quotes.
src/plone/api/validation.py:127:21: Q000 Remove bad quotes.
src/plone/api/validation.py:128:21: Q000 Remove bad quotes.
src/plone/api/validation.py:128:45: Q000 Remove bad quotes.
src/plone/api/tests/test_validation.py:37:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:40:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:65:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:70:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:74:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:79:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:84:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:91:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:98:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:123:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:124:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:131:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:132:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:133:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:159:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:160:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:165:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:166:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:167:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/base.py:4:1: I001 isort found an import in the wrong position
src/plone/api/tests/base.py:11:1: I001 isort found an import in the wrong position
src/plone/api/tests/base.py:12:1: I001 isort found an import in the wrong position
src/plone/api/tests/base.py:13:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/base.py:32:47: Q000 Remove bad quotes.
src/plone/api/tests/base.py:60:28: Q000 Remove bad quotes.
src/plone/api/tests/base.py:62:28: Q000 Remove bad quotes.
src/plone/api/tests/test_user.py:9:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_user.py:641:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:5:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:6:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:7:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:26:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_portal.py:42:16: P002 found "hasattr", consider replacing it
src/plone/api/tests/test_portal.py:106:41: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:106:57: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:144:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:145:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:175:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:185:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:194:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:195:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:196:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:197:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:210:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:211:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:212:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:232:27: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:233:24: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:234:25: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:235:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:253:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:254:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:255:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:260:9: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:270:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:271:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:272:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:280:9: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:292:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:293:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:294:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:317:27: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:318:24: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:319:25: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:320:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:326:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:327:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:328:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:329:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:468:34: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:505:44: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:516:44: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:525:44: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:576:23: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:8:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:9:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:10:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:14:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:15:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:28:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:33:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_content.py:137:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:271:37: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:879:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:880:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:881:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1015:17: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1024:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1025:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1026:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1027:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1028:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1029:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1030:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1031:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1032:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1033:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1034:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1035:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1036:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1037:13: Q000 Remove bad quotes.
src/plone/api/tests/test_group.py:4:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_env.py:9:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_env.py:30:14: D001 found declarePublic( replace it with AccessControl.ClassSecurityInfo.public
src/plone/api/tests/test_env.py:31:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:32:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:33:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:34:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
src/plone/api/tests/test_doctests.py:4:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_doctests.py:7:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_doctests.py:23:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_doctests.py:120:13: T001 print statement found.
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


OK


@pbauer Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.api/10/violations
```
src/plone/api/content.py:4:1: I001 isort found an import in the wrong position
src/plone/api/content.py:14:1: I001 isort found an import in the wrong position
src/plone/api/content.py:15:1: I001 isort found an import in the wrong position
src/plone/api/content.py:26:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/content.py:98:13: Q000 Remove bad quotes.
src/plone/api/content.py:99:13: Q000 Remove bad quotes.
src/plone/api/content.py:100:13: Q000 Remove bad quotes.
src/plone/api/content.py:268:1: C901 'delete' is too complex (15)
src/plone/api/content.py:300:25: Q000 Remove bad quotes.
src/plone/api/content.py:322:25: Q000 Remove bad quotes.
src/plone/api/content.py:360:1: C901 '_wf_transitions_for' is too complex (12)
src/plone/api/content.py:454:17: Q000 Remove bad quotes.
src/plone/api/content.py:455:17: Q000 Remove bad quotes.
src/plone/api/content.py:482:17: Q000 Remove bad quotes.
src/plone/api/content.py:521:13: Q000 Remove bad quotes.
src/plone/api/content.py:522:13: Q000 Remove bad quotes.
src/plone/api/portal.py:5:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:6:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:7:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:9:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:24:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/portal.py:66:9: Q000 Remove bad quotes.
src/plone/api/portal.py:67:9: Q000 Remove bad quotes.
src/plone/api/portal.py:68:9: Q000 Remove bad quotes.
src/plone/api/portal.py:114:13: Q000 Remove bad quotes.
src/plone/api/portal.py:115:13: Q000 Remove bad quotes.
src/plone/api/portal.py:270:13: Q000 Remove bad quotes.
src/plone/api/portal.py:271:13: Q000 Remove bad quotes.
src/plone/api/portal.py:284:17: Q000 Remove bad quotes.
src/plone/api/portal.py:285:17: Q000 Remove bad quotes.
src/plone/api/portal.py:300:17: Q000 Remove bad quotes.
src/plone/api/portal.py:301:17: Q000 Remove bad quotes.
src/plone/api/portal.py:329:13: Q000 Remove bad quotes.
src/plone/api/portal.py:330:13: Q000 Remove bad quotes.
src/plone/api/portal.py:349:17: Q000 Remove bad quotes.
src/plone/api/portal.py:350:17: Q000 Remove bad quotes.
src/plone/api/env.py:18:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/user.py:5:1: I001 isort found an import in the wrong position
src/plone/api/user.py:70:13: Q000 Remove bad quotes.
src/plone/api/user.py:71:13: Q000 Remove bad quotes.
src/plone/api/user.py:357:37: Q000 Remove bad quotes.
src/plone/api/user.py:400:37: Q000 Remove bad quotes.
src/plone/api/validation.py:20:13: Q000 Remove bad quotes.
src/plone/api/validation.py:21:13: Q000 Remove bad quotes.
src/plone/api/validation.py:22:32: Q000 Remove bad quotes.
src/plone/api/validation.py:66:21: Q000 Remove bad quotes.
src/plone/api/validation.py:67:25: Q000 Remove bad quotes.
src/plone/api/validation.py:96:21: Q000 Remove bad quotes.
src/plone/api/validation.py:97:25: Q000 Remove bad quotes.
src/plone/api/validation.py:127:21: Q000 Remove bad quotes.
src/plone/api/validation.py:128:21: Q000 Remove bad quotes.
src/plone/api/validation.py:128:45: Q000 Remove bad quotes.
src/plone/api/tests/test_validation.py:37:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:40:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:65:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:70:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:74:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:79:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:84:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:91:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:98:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:123:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:124:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:131:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:132:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:133:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:159:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:160:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:165:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:166:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:167:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/base.py:4:1: I001 isort found an import in the wrong position
src/plone/api/tests/base.py:11:1: I001 isort found an import in the wrong position
src/plone/api/tests/base.py:12:1: I001 isort found an import in the wrong position
src/plone/api/tests/base.py:13:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/base.py:32:47: Q000 Remove bad quotes.
src/plone/api/tests/base.py:60:28: Q000 Remove bad quotes.
src/plone/api/tests/base.py:62:28: Q000 Remove bad quotes.
src/plone/api/tests/test_user.py:9:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_user.py:641:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:5:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:6:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:7:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:28:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_portal.py:61:16: P002 found "hasattr", consider replacing it
src/plone/api/tests/test_portal.py:125:41: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:125:57: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:163:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:164:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:194:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:204:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:213:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:214:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:215:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:216:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:229:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:230:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:231:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:251:27: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:252:24: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:253:25: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:254:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:272:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:273:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:274:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:279:9: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:289:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:290:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:291:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:299:9: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:311:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:312:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:313:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:336:27: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:337:24: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:338:25: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:339:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:345:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:346:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:347:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:348:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:487:34: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:524:44: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:535:44: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:544:44: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:582:44: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:614:44: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:615:38: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:616:38: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:617:38: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:667:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:713:44: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:747:44: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:748:38: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:749:38: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:750:38: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:785:32: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:787:38: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:788:38: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:8:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:9:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:10:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:14:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:15:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:28:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:33:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_content.py:137:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:271:37: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:879:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:880:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:881:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1015:17: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1024:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1025:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1026:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1027:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1028:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1029:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1030:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1031:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1032:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1033:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1034:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1035:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1036:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:1037:13: Q000 Remove bad quotes.
src/plone/api/tests/test_group.py:4:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_env.py:9:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_env.py:30:14: D001 found declarePublic( replace it with AccessControl.ClassSecurityInfo.public
src/plone/api/tests/test_env.py:31:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:32:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:33:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:34:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
src/plone/api/tests/test_doctests.py:4:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_doctests.py:7:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_doctests.py:23:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_doctests.py:120:13: T001 print statement found.
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@tkimnguyen Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.api/11/violations
```
src/plone/api/content.py:268:1: C901 'delete' is too complex (15)
src/plone/api/content.py:360:1: C901 '_wf_transitions_for' is too complex (13)
src/plone/api/content.py:425:1: C901 'transition' is too complex (13)
src/plone/api/portal.py:6:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:271:13: Q000 Remove bad quotes.
src/plone/api/portal.py:272:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:6:1: I001 isort found an import in the wrong position
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


Unless you cannot avoid it (usually in the case of animations), don't inline styles. Use css classes instead.
So, replace all in-line styles in this file with classes.


Isn't `chipmunkSRS` redundant now?


Bluemix [toolchain](https://console.ng.bluemix.net/devops/toolchains/a1c1f084-c18b-4ecb-99f8-9a9b22da21b5 "FB Face Recognition"): [Delivery Pipeline](https://console.ng.bluemix.net/devops/pipelines/63e7d3d4-ea51-4079-91c8-7e11b1d3f83b "FB Face Recognition") deployed [FB-Face-Recognition](https://github.com/iris-bot/FB-Face-Recognition/releases/tag/deploy-ibm-yp-us-south-iris-bot-dev-20170509-150205 "deploy-ibm-yp-us-south-iris-bot-dev-20170509-150205") to [dev](https://console.ng.bluemix.net/apps/47bcbc3c-0115-4065-99e5-49b693b7caac "ibm:yp:us-south:iris-bot:dev"), including this commit


Most of the setup methods just do some setup, they don't call setGrabWidget as well, so I think this behaviour is unexpected. Given tat


I guess from a JavaDoc pov that makes sense, but otherwise I don't think a separate interface, with methods whose signature overlaps the ones already provided by EmbeddedCacheManager, helps


btw, anyone have client & files what possible to use to touch the system?


Please keep your JSX organised. Move the `<td>` to a new line, and keep aligned with its closing tag.


Easier to read.


Fixed at 6ea70899c5.


Same here.


Actually, I think maybe this should just be `WidgetAlgo.screengrab` or something instead.


Ok, thanks! I'll give it a try as soon as this fix lands on master


Thank you for spotting that!


So you don't recurse into `condition`, which is fine for argument factorisation, because if you had argument-dependent things there, then the form wouldn't be linear, which it should be. However, more generally, a condition may contain conditionals.


Yes, we have configuration serialization back to XML to make the changes persistent: https://github.com/infinispan/infinispan/blob/master/core/src/main/java/org/infinispan/configuration/serializing/Serializer.java


Similarly, no recursion here, which is fine for argument factorisation, but generally wrong.


Es ist noch kein PR sondern eine Entwicklung im Kontext des IllUrk-Projekts, der einen Lösungsansatz zu #127 bietet. PR kommt erst, wenn die Änderungen getestet sind.


Travis CI [build 322](https://travis-ci.org/per1234/arduino-ci-script/builds/230385135) has started. Once completed the job reports will be found at:
https://gist.github.com/per1234/2eb6ef47b55f794dd2141a0fd5706219#file-travis_ci_job_report_322-1-tsv
(build ID: 230385135)


Travis CI [build 322](https://travis-ci.org/per1234/arduino-ci-script/builds/230385135) has started. Once completed the job reports will be found at:
https://gist.github.com/per1234/2eb6ef47b55f794dd2141a0fd5706219#file-travis_ci_job_report_322-3-tsv
(build ID: 230385135)