@hannosch Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.app.vocabularies/7/violations
```
plone/__init__.py:0:1: C101 Coding magic comment not found
plone/app/__init__.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/groups.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/groups.py:1:1: F401 'itertools' imported but unused
plone/app/vocabularies/groups.py:1:1: I001 isort found an import in the wrong position
plone/app/vocabularies/groups.py:2:1: I001 isort found an import in the wrong position
plone/app/vocabularies/groups.py:3:1: I001 isort found an import in the wrong position
plone/app/vocabularies/groups.py:6:1: I001 isort found an import in the wrong position
plone/app/vocabularies/groups.py:7:1: I001 isort found an import in the wrong position
plone/app/vocabularies/groups.py:8:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/groups.py:9:1: I001 isort found an import in the wrong position
plone/app/vocabularies/groups.py:45:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/groups.py:50:45: Q000 Remove bad quotes.
plone/app/vocabularies/groups.py:134:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/groups.py:161:17: Q000 Remove bad quotes.
plone/app/vocabularies/groups.py:162:36: Q000 Remove bad quotes.
plone/app/vocabularies/security.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/security.py:5:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/security.py:6:1: I001 isort found an import in the wrong position
plone/app/vocabularies/security.py:42:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/security.py:54:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:102:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/security.py:109:80: E501 line too long (80 > 79 characters)
plone/app/vocabularies/security.py:114:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/types.py:4:1: I001 isort found an import in the wrong position
plone/app/vocabularies/types.py:5:1: I001 isort found an import in the wrong position
plone/app/vocabularies/types.py:6:1: I001 isort found an import in the wrong position
plone/app/vocabularies/types.py:7:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/types.py:8:1: I001 isort found an import in the wrong position
plone/app/vocabularies/types.py:41:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/types.py:50:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:93:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/types.py:102:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:134:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/types.py:147:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:185:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/types.py:199:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:202:14: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:202:36: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:202:54: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:203:14: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:203:33: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:203:58: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:203:80: E501 line too long (80 > 79 characters)
plone/app/vocabularies/types.py:204:14: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:204:38: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:204:62: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:205:14: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:205:41: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:205:60: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:206:14: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:206:33: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:206:47: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:207:14: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:207:33: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:242:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/types.py:254:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/interfaces.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/interfaces.py:1:1: I001 isort found an import in the wrong position
plone/app/vocabularies/interfaces.py:9:9: Q000 Remove bad quotes.
plone/app/vocabularies/interfaces.py:14:1: E302 expected 2 blank lines, found 1
plone/app/vocabularies/interfaces.py:20:9: Q000 Remove bad quotes.
plone/app/vocabularies/interfaces.py:29:9: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/users.py:1:1: I001 isort found an import in the wrong position
plone/app/vocabularies/users.py:2:1: I001 isort found an import in the wrong position
plone/app/vocabularies/users.py:4:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/users.py:5:1: I001 isort found an import in the wrong position
plone/app/vocabularies/users.py:6:1: I001 isort found an import in the wrong position
plone/app/vocabularies/users.py:7:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/users.py:8:1: I001 isort found an import in the wrong position
plone/app/vocabularies/users.py:41:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/users.py:46:45: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:122:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/users.py:149:17: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:150:36: Q000 Remove bad quotes.
plone/app/vocabularies/__init__.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/__init__.py:1:2: W292 no newline at end of file
plone/app/vocabularies/catalog.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/catalog.py:1:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/catalog.py:2:1: I001 isort found an import in the wrong position
plone/app/vocabularies/catalog.py:3:1: I001 isort found an import in the wrong position
plone/app/vocabularies/catalog.py:4:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/catalog.py:5:1: I001 isort found an import in the wrong position
plone/app/vocabularies/catalog.py:6:1: I001 isort found an import in the wrong position
plone/app/vocabularies/catalog.py:7:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/catalog.py:8:1: I001 isort found an import in the wrong position
plone/app/vocabularies/catalog.py:9:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/catalog.py:10:1: I001 isort found an import in the wrong position
plone/app/vocabularies/catalog.py:11:1: I001 isort found an import in the wrong position
plone/app/vocabularies/catalog.py:14:36: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:72:12: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:75:31: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:75:46: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:76:13: W601 .has_key() is deprecated, use 'in'
plone/app/vocabularies/catalog.py:79:19: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:79:27: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:80:15: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:80:23: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:80:54: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:80:62: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:140:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/catalog.py:147:47: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:148:51: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:152:26: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:176:80: E501 line too long (90 > 79 characters)
plone/app/vocabularies/catalog.py:180:17: W601 .has_key() is deprecated, use 'in'
plone/app/vocabularies/catalog.py:232:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/catalog.py:310:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/catalog.py:323:16: E127 continuation line over-indented for visual indent
plone/app/vocabularies/catalog.py:336:13: E265 block comment should start with '# '
plone/app/vocabularies/catalog.py:339:28: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:339:49: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:358:17: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:359:36: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:364:30: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:369:21: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:371:21: Q000 Remove bad quotes.
plone/app/vocabularies/workflow.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/workflow.py:5:1: I001 isort found an import in the wrong position
plone/app/vocabularies/workflow.py:6:1: I001 isort found an import in the wrong position
plone/app/vocabularies/workflow.py:8:1: I001 isort found an import in the wrong position
plone/app/vocabularies/workflow.py:10:1: I001 isort found an import in the wrong position
plone/app/vocabularies/workflow.py:53:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/workflow.py:65:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:101:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/workflow.py:112:80: E501 line too long (87 > 79 characters)
plone/app/vocabularies/workflow.py:115:38: S001 found module formatter
plone/app/vocabularies/workflow.py:115:80: E501 line too long (81 > 79 characters)
plone/app/vocabularies/workflow.py:118:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:178:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/workflow.py:194:80: E501 line too long (97 > 79 characters)
plone/app/vocabularies/workflow.py:195:73: E128 continuation line under-indented for visual indent
plone/app/vocabularies/workflow.py:195:80: E501 line too long (89 > 79 characters)
plone/app/vocabularies/workflow.py:200:42: E251 unexpected spaces around keyword / parameter equals
plone/app/vocabularies/workflow.py:200:44: E251 unexpected spaces around keyword / parameter equals
plone/app/vocabularies/workflow.py:201:16: E128 continuation line under-indented for visual indent
plone/app/vocabularies/workflow.py:201:21: E251 unexpected spaces around keyword / parameter equals
plone/app/vocabularies/workflow.py:201:23: E251 unexpected spaces around keyword / parameter equals
plone/app/vocabularies/workflow.py:202:16: E128 continuation line under-indented for visual indent
plone/app/vocabularies/workflow.py:202:21: E251 unexpected spaces around keyword / parameter equals
plone/app/vocabularies/workflow.py:202:23: E251 unexpected spaces around keyword / parameter equals
plone/app/vocabularies/workflow.py:202:24: Q000 Remove bad quotes.
plone/app/vocabularies/workflow.py:202:24: S001 found module formatter
plone/app/vocabularies/workflow.py:206:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/language.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/language.py:5:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/language.py:6:1: I001 isort found an import in the wrong position
plone/app/vocabularies/language.py:47:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/language.py:60:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/language.py:60:80: E501 line too long (80 > 79 characters)
plone/app/vocabularies/language.py:96:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/language.py:108:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/language.py:108:80: E501 line too long (80 > 79 characters)
plone/app/vocabularies/terms.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/terms.py:1:1: I001 isort found an import in the wrong position
plone/app/vocabularies/terms.py:2:1: I001 isort found an import in the wrong position
plone/app/vocabularies/terms.py:18:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/terms.py:21:80: E501 line too long (82 > 79 characters)
plone/app/vocabularies/terms.py:48:80: E501 line too long (81 > 79 characters)
plone/app/vocabularies/skins.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/skins.py:5:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/skins.py:6:1: I001 isort found an import in the wrong position
plone/app/vocabularies/skins.py:42:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/skins.py:54:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/tests/base.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/tests/base.py:2:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/tests/base.py:40:16: S001 found module formatter
plone/app/vocabularies/tests/__init__.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/tests/test_vocabularies.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/tests/test_vocabularies.py:1:1: I001 isort found an import in the wrong position
plone/app/vocabularies/tests/test_vocabularies.py:2:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/tests/test_vocabularies.py:3:1: I001 isort found an import in the wrong position
plone/app/vocabularies/tests/test_vocabularies.py:4:1: I001 isort found an import in the wrong position
plone/app/vocabularies/tests/test_vocabularies.py:23:80: E501 line too long (82 > 79 characters)
plone/app/vocabularies/tests/test_vocabularies.py:27:80: E501 line too long (82 > 79 characters)
plone/app/vocabularies/tests/test_vocabularies.py:31:80: E501 line too long (82 > 79 characters)
plone/app/vocabularies/tests/test_vocabularies.py:35:80: E501 line too long (82 > 79 characters)
plone/app/vocabularies/tests/test_vocabularies.py:39:80: E501 line too long (82 > 79 characters)
plone/app/vocabularies/tests/test_vocabularies.py:44:80: E501 line too long (82 > 79 characters)
plone/app/vocabularies/tests/test_vocabularies.py:48:80: E501 line too long (82 > 79 characters)
plone/app/vocabularies/tests/test_vocabularies.py:52:80: E501 line too long (82 > 79 characters)
plone/app/vocabularies/tests/test_vocabularies.py:55:1: E305 expected 2 blank lines after class or function definition, found 1
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@davisagli Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.app.vocabularies/8/violations
```
plone/__init__.py:0:1: C101 Coding magic comment not found
plone/app/__init__.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/groups.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/groups.py:1:1: I001 isort found an import in the wrong position
plone/app/vocabularies/groups.py:2:1: I001 isort found an import in the wrong position
plone/app/vocabularies/groups.py:3:1: I001 isort found an import in the wrong position
plone/app/vocabularies/groups.py:4:1: I001 isort found an import in the wrong position
plone/app/vocabularies/groups.py:5:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/groups.py:6:1: I001 isort found an import in the wrong position
plone/app/vocabularies/groups.py:7:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/groups.py:45:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/groups.py:50:45: Q000 Remove bad quotes.
plone/app/vocabularies/groups.py:134:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/groups.py:161:17: Q000 Remove bad quotes.
plone/app/vocabularies/groups.py:162:36: Q000 Remove bad quotes.
plone/app/vocabularies/security.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/security.py:9:1: I001 isort found an import in the wrong position
plone/app/vocabularies/security.py:10:1: I001 isort found an import in the wrong position
plone/app/vocabularies/security.py:46:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/security.py:64:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:110:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/security.py:123:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/types.py:1:1: I001 isort found an import in the wrong position
plone/app/vocabularies/types.py:2:1: I001 isort found an import in the wrong position
plone/app/vocabularies/types.py:3:1: I001 isort found an import in the wrong position
plone/app/vocabularies/types.py:4:1: I001 isort found an import in the wrong position
plone/app/vocabularies/types.py:5:1: I001 isort found an import in the wrong position
plone/app/vocabularies/types.py:6:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/types.py:40:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/types.py:49:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:90:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/types.py:99:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:125:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/types.py:138:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:171:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/types.py:185:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:188:14: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:188:36: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:188:54: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:189:14: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:189:33: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:189:58: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:189:80: E501 line too long (80 > 79 characters)
plone/app/vocabularies/types.py:190:14: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:190:38: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:190:62: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:191:14: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:191:41: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:192:14: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:192:33: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:192:47: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:193:14: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:193:33: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:223:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/types.py:235:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/interfaces.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/interfaces.py:1:1: I001 isort found an import in the wrong position
plone/app/vocabularies/interfaces.py:9:9: Q000 Remove bad quotes.
plone/app/vocabularies/interfaces.py:21:9: Q000 Remove bad quotes.
plone/app/vocabularies/interfaces.py:30:9: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/users.py:1:1: I001 isort found an import in the wrong position
plone/app/vocabularies/users.py:2:1: I001 isort found an import in the wrong position
plone/app/vocabularies/users.py:3:1: I001 isort found an import in the wrong position
plone/app/vocabularies/users.py:4:1: I001 isort found an import in the wrong position
plone/app/vocabularies/users.py:5:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/users.py:6:1: I001 isort found an import in the wrong position
plone/app/vocabularies/users.py:7:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/users.py:42:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/users.py:47:45: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:123:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/users.py:150:17: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:151:36: Q000 Remove bad quotes.
plone/app/vocabularies/__init__.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/__init__.py:1:2: W292 no newline at end of file
plone/app/vocabularies/editors.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/editors.py:8:1: I001 isort found an import in the wrong position
plone/app/vocabularies/editors.py:12:1: E302 expected 2 blank lines, found 1
plone/app/vocabularies/editors.py:42:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/editors.py:53:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/catalog.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/catalog.py:1:1: I001 isort found an import in the wrong position
plone/app/vocabularies/catalog.py:2:1: I001 isort found an import in the wrong position
plone/app/vocabularies/catalog.py:3:1: I001 isort found an import in the wrong position
plone/app/vocabularies/catalog.py:4:1: I001 isort found an import in the wrong position
plone/app/vocabularies/catalog.py:4:80: E501 line too long (84 > 79 characters)
plone/app/vocabularies/catalog.py:5:1: I001 isort found an import in the wrong position
plone/app/vocabularies/catalog.py:6:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/catalog.py:7:1: I001 isort found an import in the wrong position
plone/app/vocabularies/catalog.py:8:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/catalog.py:13:1: I001 isort found an import in the wrong position
plone/app/vocabularies/catalog.py:16:36: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:74:12: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:77:31: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:77:46: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:78:13: W601 .has_key() is deprecated, use 'in'
plone/app/vocabularies/catalog.py:81:19: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:81:27: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:82:15: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:82:23: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:82:54: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:82:62: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:133:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/catalog.py:140:47: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:141:51: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:145:26: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:169:80: E501 line too long (90 > 79 characters)
plone/app/vocabularies/catalog.py:173:17: W601 .has_key() is deprecated, use 'in'
plone/app/vocabularies/catalog.py:225:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/catalog.py:303:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/catalog.py:316:16: E127 continuation line over-indented for visual indent
plone/app/vocabularies/catalog.py:329:13: E265 block comment should start with '# '
plone/app/vocabularies/catalog.py:332:28: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:332:49: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:351:17: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:352:36: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:357:30: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:362:21: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:364:21: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:371:1: E302 expected 2 blank lines, found 1
plone/app/vocabularies/catalog.py:378:80: E501 line too long (85 > 79 characters)
plone/app/vocabularies/catalog.py:386:80: E501 line too long (100 > 79 characters)
plone/app/vocabularies/catalog.py:387:80: E501 line too long (94 > 79 characters)
plone/app/vocabularies/catalog.py:394:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/catalog.py:398:47: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:405:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/catalog.py:406:1: W391 blank line at end of file
plone/app/vocabularies/workflow.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/workflow.py:9:1: I001 isort found an import in the wrong position
plone/app/vocabularies/workflow.py:10:1: I001 isort found an import in the wrong position
plone/app/vocabularies/workflow.py:49:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/workflow.py:61:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:92:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/workflow.py:107:80: E501 line too long (87 > 79 characters)
plone/app/vocabularies/workflow.py:110:38: S001 found module formatter
plone/app/vocabularies/workflow.py:110:80: E501 line too long (81 > 79 characters)
plone/app/vocabularies/workflow.py:113:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:167:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/workflow.py:182:80: E501 line too long (88 > 79 characters)
plone/app/vocabularies/workflow.py:189:26: Q000 Remove bad quotes.
plone/app/vocabularies/workflow.py:189:26: S001 found module formatter
plone/app/vocabularies/workflow.py:194:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/language.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/language.py:6:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/language.py:7:1: I001 isort found an import in the wrong position
plone/app/vocabularies/language.py:46:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/language.py:59:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/language.py:59:80: E501 line too long (80 > 79 characters)
plone/app/vocabularies/language.py:93:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/language.py:105:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/language.py:105:80: E501 line too long (80 > 79 characters)
plone/app/vocabularies/terms.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/terms.py:1:1: I001 isort found an import in the wrong position
plone/app/vocabularies/terms.py:2:1: I001 isort found an import in the wrong position
plone/app/vocabularies/terms.py:18:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/terms.py:21:80: E501 line too long (82 > 79 characters)
plone/app/vocabularies/terms.py:48:80: E501 line too long (81 > 79 characters)
plone/app/vocabularies/skins.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/skins.py:8:1: I001 isort found an import in the wrong position
plone/app/vocabularies/skins.py:50:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/skins.py:60:80: E501 line too long (88 > 79 characters)
plone/app/vocabularies/skins.py:65:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/tests/base.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/tests/base.py:2:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/tests/base.py:3:1: I001 isort found an import in the wrong position
plone/app/vocabularies/tests/base.py:53:16: S001 found module formatter
plone/app/vocabularies/tests/base.py:101:1: E302 expected 2 blank lines, found 1
plone/app/vocabularies/tests/__init__.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/tests/test_vocabularies.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/tests/test_vocabularies.py:1:1: I001 isort found an import in the wrong position
plone/app/vocabularies/tests/test_vocabularies.py:3:1: I001 isort found an import in the wrong position
plone/app/vocabularies/tests/test_vocabularies.py:4:1: I004 isort found an unexpected blank line in imports
plone/app/vocabularies/tests/test_vocabularies.py:5:1: I001 isort found an import in the wrong position
plone/app/vocabularies/tests/test_vocabularies.py:6:1: I001 isort found an import in the wrong position
plone/app/vocabularies/tests/test_vocabularies.py:62:8: E131 continuation line unaligned for hanging indent
plone/app/vocabularies/tests/test_vocabularies.py:63:22: E127 continuation line over-indented for visual indent
plone/app/vocabularies/tests/test_vocabularies.py:64:22: E127 continuation line over-indented for visual indent
plone/app/vocabularies/tests/test_vocabularies.py:65:22: E127 continuation line over-indented for visual indent
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@esteele Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.app.vocabularies/9/violations
```
plone/__init__.py:0:1: C101 Coding magic comment not found
plone/app/__init__.py:0:1: C101 Coding magic comment not found
plone/app/querystring/querybuilder.py:0:1: C101 Coding magic comment not found
plone/app/querystring/querybuilder.py:1:1: I001 isort found an import in the wrong position
plone/app/querystring/querybuilder.py:2:1: I004 isort found an unexpected blank line in imports
plone/app/querystring/querybuilder.py:3:1: I001 isort found an import in the wrong position
plone/app/querystring/querybuilder.py:5:1: I004 isort found an unexpected blank line in imports
plone/app/querystring/querybuilder.py:10:1: I001 isort found an import in the wrong position
plone/app/querystring/querybuilder.py:11:1: I001 isort found an import in the wrong position
plone/app/querystring/querybuilder.py:12:1: I001 isort found an import in the wrong position
plone/app/querystring/querybuilder.py:13:1: I004 isort found an unexpected blank line in imports
plone/app/querystring/querybuilder.py:14:1: I001 isort found an import in the wrong position
plone/app/querystring/querybuilder.py:15:1: I001 isort found an import in the wrong position
plone/app/querystring/querybuilder.py:16:1: I004 isort found an unexpected blank line in imports
plone/app/querystring/querybuilder.py:17:1: I001 isort found an import in the wrong position
plone/app/querystring/querybuilder.py:65:1: C901 'QueryBuilder._makequery' is too complex (15)
plone/app/querystring/querybuilder.py:97:64: Q000 Remove bad quotes.
plone/app/querystring/querybuilder.py:107:56: Q000 Remove bad quotes.
plone/app/querystring/querybuilder.py:131:15: Q000 Remove bad quotes.
plone/app/querystring/querybuilder.py:132:23: Q000 Remove bad quotes.
plone/app/querystring/interfaces.py:0:1: C101 Coding magic comment not found
plone/app/querystring/interfaces.py:2:1: I001 isort found an import in the wrong position
plone/app/querystring/interfaces.py:13:28: Q000 Remove bad quotes.
plone/app/querystring/interfaces.py:14:30: Q000 Remove bad quotes.
plone/app/querystring/interfaces.py:15:32: Q000 Remove bad quotes.
plone/app/querystring/interfaces.py:16:29: Q000 Remove bad quotes.
plone/app/querystring/interfaces.py:20:28: Q000 Remove bad quotes.
plone/app/querystring/interfaces.py:21:30: Q000 Remove bad quotes.
plone/app/querystring/interfaces.py:22:26: Q000 Remove bad quotes.
plone/app/querystring/interfaces.py:23:27: Q000 Remove bad quotes.
plone/app/querystring/interfaces.py:24:29: Q000 Remove bad quotes.
plone/app/querystring/interfaces.py:25:51: Q000 Remove bad quotes.
plone/app/querystring/interfaces.py:26:33: Q000 Remove bad quotes.
plone/app/querystring/interfaces.py:27:28: Q000 Remove bad quotes.
plone/app/querystring/__init__.py:0:1: C101 Coding magic comment not found
plone/app/querystring/__init__.py:1:2: W292 no newline at end of file
plone/app/querystring/registryreader.py:0:1: C101 Coding magic comment not found
plone/app/querystring/registryreader.py:2:1: I001 isort found an import in the wrong position
plone/app/querystring/registryreader.py:3:1: I004 isort found an unexpected blank line in imports
plone/app/querystring/registryreader.py:4:1: F401 'plone.registry.interfaces.IRegistry' imported but unused
plone/app/querystring/registryreader.py:6:1: F401 'zope.component.adapts' imported but unused
plone/app/querystring/registryreader.py:6:1: I001 isort found an import in the wrong position
plone/app/querystring/registryreader.py:7:1: I001 isort found an import in the wrong position
plone/app/querystring/registryreader.py:13:1: I001 isort found an import in the wrong position
plone/app/querystring/registryreader.py:14:1: I003 isort expected 1 blank line in imports, found 0
plone/app/querystring/registryreader.py:15:28: Q000 Remove bad quotes.
plone/app/querystring/registryreader.py:17:1: E302 expected 2 blank lines, found 1
plone/app/querystring/registryreader.py:21:12: E713 test for membership should be 'not in'
plone/app/querystring/registryreader.py:32:5: D001 found implements( replace it with zope.interface.implementer
plone/app/querystring/registryreader.py:34:14: Q000 Remove bad quotes.
plone/app/querystring/registryreader.py:56:20: E713 test for membership should be 'not in'
plone/app/querystring/registryreader.py:87:33: Q000 Remove bad quotes.
plone/app/querystring/registryreader.py:87:33: S001 found module formatter
plone/app/querystring/registryreader.py:109:38: S001 found module formatter
plone/app/querystring/registryreader.py:111:45: S001 found module formatter
plone/app/querystring/registryreader.py:123:36: S001 found module formatter
plone/app/querystring/queryparser.py:0:1: C101 Coding magic comment not found
plone/app/querystring/queryparser.py:2:1: I001 isort found an import in the wrong position
plone/app/querystring/queryparser.py:3:1: I004 isort found an unexpected blank line in imports
plone/app/querystring/queryparser.py:4:1: I001 isort found an import in the wrong position
plone/app/querystring/queryparser.py:13:1: I003 isort expected 1 blank line in imports, found 0
plone/app/querystring/queryparser.py:13:1: I003 isort expected 1 blank line in imports, found 0
plone/app/querystring/queryparser.py:30:29: Q000 Remove bad quotes.
plone/app/querystring/queryparser.py:30:29: S001 found module formatter
plone/app/querystring/queryparser.py:55:13: Q000 Remove bad quotes.
plone/app/querystring/queryparser.py:89:11: E124 closing bracket does not match visual indentation
plone/app/querystring/queryparser.py:98:11: E124 closing bracket does not match visual indentation
plone/app/querystring/queryparser.py:107:11: E124 closing bracket does not match visual indentation
plone/app/querystring/queryparser.py:118:11: E124 closing bracket does not match visual indentation
plone/app/querystring/queryparser.py:208:8: E713 test for membership should be 'not in'
plone/app/querystring/queryparser.py:230:17: Q000 Remove bad quotes.
plone/app/querystring/queryparser.py:239:50: Q000 Remove bad quotes.
plone/app/querystring/tests/registry_testdata.py:0:1: C101 Coding magic comment not found
plone/app/querystring/tests/registry_testdata.py:1:80: E501 line too long (1092 > 79 characters)
plone/app/querystring/tests/registry_testdata.py:17:80: E501 line too long (82 > 79 characters)
plone/app/querystring/tests/registry_testdata.py:25:80: E501 line too long (84 > 79 characters)
plone/app/querystring/tests/registry_testdata.py:32:80: E501 line too long (83 > 79 characters)
plone/app/querystring/tests/registry_testdata.py:62:80: E501 line too long (82 > 79 characters)
plone/app/querystring/tests/registry_testdata.py:94:80: E501 line too long (81 > 79 characters)
plone/app/querystring/tests/registry_testdata.py:100:80: E501 line too long (82 > 79 characters)
plone/app/querystring/tests/base.py:0:1: C101 Coding magic comment not found
plone/app/querystring/tests/base.py:2:1: I001 isort found an import in the wrong position
plone/app/querystring/tests/base.py:56:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/querystring/tests/base.py:56:36: Q000 Remove bad quotes.
plone/app/querystring/tests/testRegistryReader.py:0:1: C101 Coding magic comment not found
plone/app/querystring/tests/testRegistryReader.py:1:1: I001 isort found an import in the wrong position
plone/app/querystring/tests/testRegistryReader.py:2:1: I004 isort found an unexpected blank line in imports
plone/app/querystring/tests/testRegistryReader.py:4:1: I001 isort found an import in the wrong position
plone/app/querystring/tests/testRegistryReader.py:10:1: I001 isort found an import in the wrong position
plone/app/querystring/tests/testRegistryReader.py:11:1: I001 isort found an import in the wrong position
plone/app/querystring/tests/testRegistryReader.py:12:1: I001 isort found an import in the wrong position
plone/app/querystring/tests/testRegistryReader.py:13:1: I001 isort found an import in the wrong position
plone/app/querystring/tests/testRegistryReader.py:17:5: D001 found implements( replace it with zope.interface.implementer
plone/app/querystring/tests/testRegistryReader.py:102:13: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testRegistryReader.py:104:13: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryBuilder.py:1:2: E114 indentation is not a multiple of four (comment)
plone/app/querystring/tests/testQueryBuilder.py:1:2: E116 unexpected indentation (comment)
plone/app/querystring/tests/testQueryBuilder.py:5:1: I004 isort found an unexpected blank line in imports
plone/app/querystring/tests/testQueryBuilder.py:6:1: I001 isort found an import in the wrong position
plone/app/querystring/tests/testQueryBuilder.py:13:35: Q000 Remove bad quotes.
plone/app/querystring/tests/testQueryBuilder.py:14:35: Q000 Remove bad quotes.
plone/app/querystring/tests/testQueryBuilder.py:15:41: Q000 Remove bad quotes.
plone/app/querystring/tests/testQueryBuilder.py:21:46: E127 continuation line over-indented for visual indent
plone/app/querystring/tests/testQueryBuilder.py:30:46: Q000 Remove bad quotes.
plone/app/querystring/tests/testQueryParser.py:0:1: C101 Coding magic comment not found
plone/app/querystring/tests/testQueryParser.py:1:1: I001 isort found an import in the wrong position
plone/app/querystring/tests/testQueryParser.py:2:1: I004 isort found an unexpected blank line in imports
plone/app/querystring/tests/testQueryParser.py:8:1: I004 isort found an unexpected blank line in imports
plone/app/querystring/tests/testQueryParser.py:9:1: I001 isort found an import in the wrong position
plone/app/querystring/tests/testQueryParser.py:10:1: I001 isort found an import in the wrong position
plone/app/querystring/tests/testQueryParser.py:12:1: I003 isort expected 1 blank line in imports, found 0
plone/app/querystring/tests/testQueryParser.py:12:1: I003 isort expected 1 blank line in imports, found 0
plone/app/querystring/tests/testQueryParser.py:13:16: Q000 Remove bad quotes.
plone/app/querystring/tests/testQueryParser.py:20:32: Q000 Remove bad quotes.
plone/app/querystring/tests/testQueryParser.py:38:37: Q000 Remove bad quotes.
plone/app/querystring/tests/testQueryParser.py:38:37: S001 found module formatter
plone/app/querystring/tests/testQueryParser.py:55:16: Q000 Remove bad quotes.
plone/app/querystring/tests/testQueryParser.py:55:16: S001 found module formatter
plone/app/querystring/tests/testQueryParser.py:58:57: Q000 Remove bad quotes.
plone/app/querystring/tests/testQueryParser.py:58:57: S001 found module formatter
plone/app/querystring/tests/testQueryParser.py:63:41: Q000 Remove bad quotes.
plone/app/querystring/tests/testQueryParser.py:64:16: Q000 Remove bad quotes.
plone/app/querystring/tests/testQueryParser.py:72:5: D001 found implements( replace it with zope.interface.implementer
plone/app/querystring/tests/testQueryParser.py:82:17: Q000 Remove bad quotes.
plone/app/querystring/tests/testQueryParser.py:119:48: Q000 Remove bad quotes.
plone/app/querystring/tests/testQueryParser.py:143:53: S001 found module formatter
plone/app/querystring/tests/testQueryParser.py:153:53: S001 found module formatter
plone/app/querystring/tests/testQueryParser.py:165:26: S001 found module formatter
plone/app/querystring/tests/testQueryParser.py:175:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:176:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:184:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:185:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:193:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:194:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:201:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:202:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:213:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:214:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:224:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:225:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:237:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:238:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:249:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:250:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:259:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:260:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:267:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:268:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:270:39: S001 found module formatter
plone/app/querystring/tests/testQueryParser.py:275:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:276:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:278:39: S001 found module formatter
plone/app/querystring/tests/testQueryParser.py:284:35: Q000 Remove bad quotes.
plone/app/querystring/tests/testQueryParser.py:284:35: S001 found module formatter
plone/app/querystring/tests/testQueryParser.py:286:46: Q000 Remove bad quotes.
plone/app/querystring/tests/testQueryParser.py:286:46: S001 found module formatter
plone/app/querystring/tests/testQueryParser.py:291:54: Q000 Remove bad quotes.
plone/app/querystring/tests/testQueryParser.py:295:29: Q000 Remove bad quotes.
plone/app/querystring/tests/testQueryParser.py:295:29: S001 found module formatter
plone/app/querystring/tests/testQueryParser.py:298:50: Q000 Remove bad quotes.
plone/app/querystring/tests/testQueryParser.py:298:50: S001 found module formatter
plone/app/querystring/tests/testQueryParser.py:302:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:303:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:305:39: S001 found module formatter
plone/app/querystring/tests/testQueryParser.py:310:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:311:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:313:39: S001 found module formatter
plone/app/querystring/tests/testQueryParser.py:318:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:319:19: E128 continuation line under-indented for visual indent
plone/app/querystring/tests/testQueryParser.py:321:39: S001 found module formatter
plone/app/querystring/tests/testQueryParser.py:329:39: S001 found module formatter
plone/app/querystring/tests/testQueryParser.py:337:39: S001 found module formatter
plone/app/querystring/tests/testRegistryIntegration.py:0:1: C101 Coding magic comment not found
plone/app/querystring/tests/testRegistryIntegration.py:1:1: I001 isort found an import in the wrong position
plone/app/querystring/tests/testRegistryIntegration.py:11:18: Q000 Remove bad quotes.
plone/app/querystring/tests/testRegistryIntegration.py:14:44: Q000 Remove bad quotes.
plone/app/querystring/tests/testRegistryIntegration.py:14:55: Q000 Remove bad quotes.
plone/app/querystring/tests/testRegistryIntegration.py:15:44: Q000 Remove bad quotes.
plone/app/querystring/tests/testRegistryIntegration.py:17:44: Q000 Remove bad quotes.
plone/app/querystring/tests/testRegistryIntegration.py:24:34: Q000 Remove bad quotes.
plone/app/querystring/tests/testRegistryIntegration.py:26:44: Q000 Remove bad quotes.
plone/app/querystring/tests/testRegistryIntegration.py:26:55: Q000 Remove bad quotes.
plone/app/querystring/tests/testRegistryIntegration.py:27:44: Q000 Remove bad quotes.
plone/app/querystring/tests/testRegistryIntegration.py:29:44: Q000 Remove bad quotes.
plone/app/querystring/tests/testRegistryIntegration.py:40:34: Q000 Remove bad quotes.
plone/app/querystring/tests/testRegistryIntegration.py:42:44: Q000 Remove bad quotes.
plone/app/querystring/tests/testRegistryIntegration.py:42:55: Q000 Remove bad quotes.
plone/app/querystring/tests/testRegistryIntegration.py:44:40: Q000 Remove bad quotes.
plone/app/querystring/tests/testRegistryIntegration.py:50:44: Q000 Remove bad quotes.
plone/app/querystring/tests/testRegistryIntegration.py:51:26: Q000 Remove bad quotes.
plone/app/querystring/tests/testRegistryIntegration.py:52:44: Q000 Remove bad quotes.
plone/app/querystring/tests/testRegistryIntegration.py:53:44: Q000 Remove bad quotes.
plone/app/querystring/tests/testRegistryIntegration.py:54:44: Q000 Remove bad quotes.
plone/app/querystring/tests/testRegistryIntegration.py:54:55: Q000 Remove bad quotes.
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@mauritsvanrees Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.app.vocabularies/10/violations
```
plone/app/vocabularies/actions.py:19:9: B901 blind except: statement
plone/app/vocabularies/groups.py:51:45: Q000 Remove bad quotes.
plone/app/vocabularies/groups.py:161:19: Q000 Remove bad quotes.
plone/app/vocabularies/groups.py:162:38: Q000 Remove bad quotes.
plone/app/vocabularies/security.py:12:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/security.py:62:26: Q000 Remove bad quotes.
plone/app/vocabularies/security.py:62:39: Q000 Remove bad quotes.
plone/app/vocabularies/security.py:72:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:131:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:98:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:149:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:189:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:240:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:244:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:245:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:246:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:247:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:248:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:249:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:250:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:251:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:252:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:253:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:254:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:255:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:256:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:257:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:258:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:307:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/testing.py:18:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/testing.py:21:10: Q000 Remove bad quotes.
plone/app/vocabularies/syndication.py:11:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/syndication.py:42:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/syndication.py:54:22: Q000 Remove bad quotes.
plone/app/vocabularies/syndication.py:60:21: S001 found module formatter
plone/app/vocabularies/syndication.py:65:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/interfaces.py:12:9: Q000 Remove bad quotes.
plone/app/vocabularies/interfaces.py:24:9: Q000 Remove bad quotes.
plone/app/vocabularies/interfaces.py:33:9: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:51:45: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:71:46: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:83:40: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:113:40: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:205:19: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:206:38: Q000 Remove bad quotes.
plone/app/vocabularies/__init__.py:20:13: D001 found directlyProvides( replace it with zope.interface.provider
plone/app/vocabularies/editors.py:9:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/editors.py:54:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/datetimerelated.py:9:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/datetimerelated.py:10:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/datetimerelated.py:42:15: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:21:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/catalog.py:25:36: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:83:12: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:86:31: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:86:48: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:90:19: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:90:27: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:91:15: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:91:23: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:91:54: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:91:62: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:149:47: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:150:51: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:154:26: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:341:28: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:341:49: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:360:19: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:361:38: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:366:32: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:371:21: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:373:23: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:443:44: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:464:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/catalog.py:519:20: P002 found "hasattr", consider replacing it
plone/app/vocabularies/catalog.py:519:34: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:525:20: P002 found "hasattr", consider replacing it
plone/app/vocabularies/catalog.py:525:34: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:532:16: P002 found "hasattr", consider replacing it
plone/app/vocabularies/catalog.py:532:30: Q000 Remove bad quotes.
plone/app/vocabularies/workflow.py:12:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/workflow.py:71:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:133:33: S001 found module formatter
plone/app/vocabularies/workflow.py:138:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:233:26: Q000 Remove bad quotes.
plone/app/vocabularies/workflow.py:233:26: S001 found module formatter
plone/app/vocabularies/workflow.py:238:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/skins.py:9:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/skins.py:71:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/tests/base.py:58:16: S001 found module formatter
plone/app/vocabularies/tests/test_vocabularies.py:96:1: W391 blank line at end of file
plone/app/vocabularies/tests/test_timezonevocabularies.py:6:1: I003 isort expected 1 blank line in imports, found 0
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@vangheem Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.app.vocabularies/11/violations
```
plone/app/vocabularies/actions.py:19:9: B901 blind except: statement
plone/app/vocabularies/groups.py:51:45: Q000 Remove bad quotes.
plone/app/vocabularies/groups.py:161:19: Q000 Remove bad quotes.
plone/app/vocabularies/groups.py:162:38: Q000 Remove bad quotes.
plone/app/vocabularies/security.py:12:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/security.py:62:26: Q000 Remove bad quotes.
plone/app/vocabularies/security.py:62:39: Q000 Remove bad quotes.
plone/app/vocabularies/security.py:72:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:131:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:98:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:149:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:189:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:240:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:244:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:245:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:246:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:247:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:248:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:249:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:250:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:251:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:252:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:253:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:254:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:255:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:256:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:257:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:258:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:307:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/testing.py:18:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/testing.py:21:10: Q000 Remove bad quotes.
plone/app/vocabularies/syndication.py:11:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/syndication.py:42:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/syndication.py:54:22: Q000 Remove bad quotes.
plone/app/vocabularies/syndication.py:60:21: S001 found module formatter
plone/app/vocabularies/syndication.py:65:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/interfaces.py:12:9: Q000 Remove bad quotes.
plone/app/vocabularies/interfaces.py:24:9: Q000 Remove bad quotes.
plone/app/vocabularies/interfaces.py:33:9: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:51:45: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:71:46: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:83:40: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:113:40: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:205:19: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:206:38: Q000 Remove bad quotes.
plone/app/vocabularies/__init__.py:20:13: D001 found directlyProvides( replace it with zope.interface.provider
plone/app/vocabularies/editors.py:9:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/editors.py:54:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/datetimerelated.py:9:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/datetimerelated.py:10:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/datetimerelated.py:42:15: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:21:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/catalog.py:25:36: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:83:12: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:86:31: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:86:48: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:90:19: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:90:27: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:91:15: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:91:23: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:91:54: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:91:62: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:149:47: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:150:51: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:154:26: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:341:28: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:341:49: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:360:19: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:361:38: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:366:32: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:371:21: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:373:23: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:443:44: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:464:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/catalog.py:510:20: P002 found "hasattr", consider replacing it
plone/app/vocabularies/catalog.py:510:34: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:516:20: P002 found "hasattr", consider replacing it
plone/app/vocabularies/catalog.py:516:34: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:523:16: P002 found "hasattr", consider replacing it
plone/app/vocabularies/catalog.py:523:30: Q000 Remove bad quotes.
plone/app/vocabularies/workflow.py:12:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/workflow.py:71:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:133:33: S001 found module formatter
plone/app/vocabularies/workflow.py:138:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:233:26: Q000 Remove bad quotes.
plone/app/vocabularies/workflow.py:233:26: S001 found module formatter
plone/app/vocabularies/workflow.py:238:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/skins.py:9:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/skins.py:71:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/tests/base.py:58:16: S001 found module formatter
plone/app/vocabularies/tests/test_vocabularies.py:96:1: W391 blank line at end of file
plone/app/vocabularies/tests/test_timezonevocabularies.py:6:1: I003 isort expected 1 blank line in imports, found 0
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@vincentfretin Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.app.vocabularies/12/violations
```
plone/app/vocabularies/actions.py:19:9: B901 blind except: statement
plone/app/vocabularies/groups.py:51:45: Q000 Remove bad quotes.
plone/app/vocabularies/groups.py:161:19: Q000 Remove bad quotes.
plone/app/vocabularies/groups.py:162:38: Q000 Remove bad quotes.
plone/app/vocabularies/security.py:12:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/security.py:62:26: Q000 Remove bad quotes.
plone/app/vocabularies/security.py:62:39: Q000 Remove bad quotes.
plone/app/vocabularies/security.py:72:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:131:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:98:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:149:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:189:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:240:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:244:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:245:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:246:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:247:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:248:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:249:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:250:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:251:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:252:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:253:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:254:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:255:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:256:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:257:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:258:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:307:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/testing.py:18:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/testing.py:21:10: Q000 Remove bad quotes.
plone/app/vocabularies/syndication.py:11:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/syndication.py:42:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/syndication.py:54:22: Q000 Remove bad quotes.
plone/app/vocabularies/syndication.py:60:21: S001 found module formatter
plone/app/vocabularies/syndication.py:65:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/images.py:8:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/interfaces.py:12:9: Q000 Remove bad quotes.
plone/app/vocabularies/interfaces.py:24:9: Q000 Remove bad quotes.
plone/app/vocabularies/interfaces.py:33:9: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:51:45: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:71:46: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:83:40: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:113:40: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:205:19: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:206:38: Q000 Remove bad quotes.
plone/app/vocabularies/__init__.py:20:13: D001 found directlyProvides( replace it with zope.interface.provider
plone/app/vocabularies/editors.py:9:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/editors.py:54:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/datetimerelated.py:9:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/datetimerelated.py:10:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/datetimerelated.py:42:15: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:22:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/catalog.py:26:36: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:84:12: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:87:31: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:87:48: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:91:19: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:91:27: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:92:15: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:92:23: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:92:54: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:92:62: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:150:47: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:151:51: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:155:26: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:342:28: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:342:49: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:361:19: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:362:38: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:367:32: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:372:21: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:374:23: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:444:44: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:465:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/catalog.py:511:20: P002 found "hasattr", consider replacing it
plone/app/vocabularies/catalog.py:511:34: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:517:20: P002 found "hasattr", consider replacing it
plone/app/vocabularies/catalog.py:517:34: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:524:16: P002 found "hasattr", consider replacing it
plone/app/vocabularies/catalog.py:524:30: Q000 Remove bad quotes.
plone/app/vocabularies/workflow.py:12:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/workflow.py:71:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:133:33: S001 found module formatter
plone/app/vocabularies/workflow.py:138:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:233:26: Q000 Remove bad quotes.
plone/app/vocabularies/workflow.py:233:26: S001 found module formatter
plone/app/vocabularies/workflow.py:238:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/skins.py:9:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/skins.py:71:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/tests/test_imagesvocabularies.py:3:1: F401 'plone.registry.interfaces.IRegistry' imported but unused
plone/app/vocabularies/tests/test_imagesvocabularies.py:6:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/tests/base.py:3:1: I001 isort found an import in the wrong position
plone/app/vocabularies/tests/base.py:4:1: I001 isort found an import in the wrong position
plone/app/vocabularies/tests/base.py:40:1: E303 too many blank lines (3)
plone/app/vocabularies/tests/base.py:82:16: S001 found module formatter
plone/app/vocabularies/tests/base.py:111:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/tests/base.py:149:5: D001 found implements( replace it with zope.interface.implementer
plone/app/vocabularies/tests/test_vocabularies.py:96:1: W391 blank line at end of file
plone/app/vocabularies/tests/test_timezonevocabularies.py:6:1: I003 isort expected 1 blank line in imports, found 0
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@iham Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.app.vocabularies/13/violations
```
plone/app/vocabularies/actions.py:20:9: B901 blind except: statement
plone/app/vocabularies/actions.py:52:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/groups.py:51:45: Q000 Remove bad quotes.
plone/app/vocabularies/groups.py:161:19: Q000 Remove bad quotes.
plone/app/vocabularies/groups.py:162:38: Q000 Remove bad quotes.
plone/app/vocabularies/security.py:12:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/security.py:62:26: Q000 Remove bad quotes.
plone/app/vocabularies/security.py:62:39: Q000 Remove bad quotes.
plone/app/vocabularies/security.py:72:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:131:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:142:13: E128 continuation line under-indented for visual indent
plone/app/vocabularies/security.py:145:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:98:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:149:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:189:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:240:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:244:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:245:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:246:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:247:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:248:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:249:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:250:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:251:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:252:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:253:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:254:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:255:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:256:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:257:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:258:5: Q000 Remove bad quotes.
plone/app/vocabularies/types.py:307:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/testing.py:18:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/testing.py:21:10: Q000 Remove bad quotes.
plone/app/vocabularies/syndication.py:11:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/syndication.py:42:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/syndication.py:54:22: Q000 Remove bad quotes.
plone/app/vocabularies/syndication.py:60:21: S001 found module formatter
plone/app/vocabularies/syndication.py:65:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/images.py:8:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/interfaces.py:12:9: Q000 Remove bad quotes.
plone/app/vocabularies/interfaces.py:24:9: Q000 Remove bad quotes.
plone/app/vocabularies/interfaces.py:33:9: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:18:44: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:23:80: E501 line too long (86 > 79 characters)
plone/app/vocabularies/users.py:62:45: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:82:46: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:115:40: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:203:19: Q000 Remove bad quotes.
plone/app/vocabularies/users.py:204:38: Q000 Remove bad quotes.
plone/app/vocabularies/__init__.py:20:13: D001 found directlyProvides( replace it with zope.interface.provider
plone/app/vocabularies/editors.py:9:1: I001 isort found an import in the wrong position
plone/app/vocabularies/editors.py:10:1: I001 isort found an import in the wrong position
plone/app/vocabularies/editors.py:24:20: Q000 Remove bad quotes.
plone/app/vocabularies/editors.py:33:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/utils.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/datetimerelated.py:9:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/datetimerelated.py:10:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/datetimerelated.py:42:15: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:31:36: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:89:12: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:92:31: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:92:48: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:96:19: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:96:27: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:97:15: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:97:23: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:97:54: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:97:62: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:155:47: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:156:51: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:343:28: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:343:49: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:362:19: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:363:38: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:368:32: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:373:21: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:375:23: Q000 Remove bad quotes.
plone/app/vocabularies/catalog.py:499:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/catalog.py:605:80: E501 line too long (81 > 79 characters)
plone/app/vocabularies/workflow.py:12:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/workflow.py:71:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:133:33: S001 found module formatter
plone/app/vocabularies/workflow.py:138:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:233:26: Q000 Remove bad quotes.
plone/app/vocabularies/workflow.py:233:26: S001 found module formatter
plone/app/vocabularies/workflow.py:238:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/skins.py:9:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/skins.py:71:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/tests/test_editors.py:5:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/tests/test_editors.py:19:59: Q000 Remove bad quotes.
plone/app/vocabularies/tests/test_imagesvocabularies.py:5:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/tests/base.py:3:1: I001 isort found an import in the wrong position
plone/app/vocabularies/tests/base.py:4:1: I001 isort found an import in the wrong position
plone/app/vocabularies/tests/base.py:74:16: S001 found module formatter
plone/app/vocabularies/tests/test_subjects_under_context.py:4:1: I001 isort found an import in the wrong position
plone/app/vocabularies/tests/test_vocabularies.py:90:1: W391 blank line at end of file
plone/app/vocabularies/tests/test_timezonevocabularies.py:6:1: I003 isort expected 1 blank line in imports, found 0
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@vangheem Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.app.vocabularies/14/violations
```
plone/app/vocabularies/actions.py:52:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:73:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:132:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:146:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:98:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:149:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:189:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:240:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:307:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/testing.py:18:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/syndication.py:43:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/syndication.py:68:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/__init__.py:20:13: D001 found directlyProvides( replace it with zope.interface.provider
plone/app/vocabularies/editors.py:33:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/catalog.py:546:21: F821 undefined name 'query'
plone/app/vocabularies/workflow.py:72:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:139:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:239:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/skins.py:72:1: E305 expected 2 blank lines after class or function definition, found 1
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


``@ORM\ Table(name="article")`` is not required


@vangheem Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.app.vocabularies/15/violations
```
plone/app/vocabularies/actions.py:52:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:73:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:137:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:151:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:98:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:149:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:189:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:240:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:307:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/testing.py:18:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/syndication.py:43:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/syndication.py:68:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/principals.py:0:1: C101 Coding magic comment not found
plone/app/vocabularies/principals.py:126:80: E501 line too long (81 > 79 characters)
plone/app/vocabularies/principals.py:130:80: E501 line too long (83 > 79 characters)
plone/app/vocabularies/__init__.py:20:13: D001 found directlyProvides( replace it with zope.interface.provider
plone/app/vocabularies/editors.py:33:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/catalog.py:511:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:72:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:139:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:239:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/skins.py:72:1: E305 expected 2 blank lines after class or function definition, found 1
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@esteele Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.app.vocabularies/16/violations
```
plone/app/vocabularies/actions.py:52:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:73:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:132:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:146:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:99:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:150:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:190:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:241:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:315:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/testing.py:18:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/syndication.py:43:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/syndication.py:68:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/interfaces.py:58:1: W391 blank line at end of file
plone/app/vocabularies/__init__.py:3:1: I001 isort found an import in the wrong position
plone/app/vocabularies/__init__.py:13:1: E731 do not assign a lambda expression, use a def
plone/app/vocabularies/__init__.py:30:13: D001 found directlyProvides( replace it with zope.interface.provider
plone/app/vocabularies/__init__.py:69:1: W391 blank line at end of file
plone/app/vocabularies/editors.py:33:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:72:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:139:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:239:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/skins.py:72:1: E305 expected 2 blank lines after class or function definition, found 1
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


rm plz


Hi Steve, looks good.  Do you think people may use True or False or other cases?  Might be good to relax that.


`for x in season_type.keys()`


@ErinOC see `etools-prp-ajax`


@igorframos If you used the `releasy` CLI to deploy, remember to use the flag `--stable` if you don't want to push a beta version.
Check the help for more info about the arguments/flags.


entity product is not required form CRUD


Resubmitted 30 seconds later with Class functionality


It should be:

?>bower_components/bootstrap/dist/css/bootstrap.min.css"

?>/bower_components/bootstrap/dist/css/bootstrap.min.css"
formats as:
//bower_components/bootstrap/dist/css/bootstrap.min.css


I made a special effort to try to not reveal, or give the least attention to, the internal versions. This is tied to the whole dilemma we're facing between Platform versions and internal library versions; between maven and web package versions and the fact that if these diverge, it will be impossible to publicly hide the fact.
So, I was trying to stay away from that discussion by locally adopting a conceptual naming scheme. Someone suggested code names could also be used to refer to the future version.


This also opens the way for **electric wires** and **power generators / storage** which have a higher tier than tier 2.

Many Galacticraft machines  (Electric furnaces, Electric Ingot Compressor, the three gas machines from Mars, and now also Circuit Fabricator) will operate **faster** if supplied with higher tier power.  Refinery and Cargo Loader / Unloader also now work this way but they already reach their maximum speed with tier 2 power.

Higher tier power = **all** electric wires connected in the network have the higher tier + **at least one** power output machine (generator or storage) has the higher tier.

So the tier seen by a Machine receiving power from a grid will be the minimum out of:
     ((minimum tier of all power connectors in the grid), (maximum tier of all power outputters putting power into that grid))

We can also convert to a tier from IC2 power - if IC2 is supplying 32V or anything else less than 128V, that's tier 1;  128V or 256V gives tier 2; more than 256V gives tier 4.

And our power output into IC2 is the Galacticraft tier * 128V, so you can have Galacticraft wires output 512V to IC2 machines if you have tier 4, for example.

---------

@SteveKunG  @BlesseNtumble  @katzenpapst  @MJRLegends  @gug2  @kingofminers

**Galacticraft add ons** could now make tier 3 or tier 4 wires and storage - for some very speedy working Galacticraft machines.  Tier can be anything up to tier 6  (above 6 it's capped at 6).  Some machines, for example the gas machines, will reach maximum speed already at tier 3, but the Electric Furnace, Electric Ingot Compressor and the Circuit Fabricator can be pushed much faster.

You can also maybe have your electric machines in your add-ons work faster if given higher tier power, similar to Circuit Fabricator etc.  You would have to extend ```EnergyStorageTile``` of course, or else include code similar to [this](https://github.com/micdoodle8/Galacticraft/blob/492e954e8db7e34d599933d32d8e91e2545f88b0/src/main/java/micdoodle8/mods/galacticraft/core/energy/tile/EnergyStorageTile.java#L94-L100) if you are extending ```micdoodle8.mods.galacticraft.api.transmission.tile.IElectrical``` in some other way.


This is the same comment as for DatabaseDocumentRevisionProvider which is weird. IMO it should be something different as otherwise we wouldn't need 2 implementations :)


try to use proptypes instead
https://github.com/reactjs/prop-types


Just a couple notes, but otherwise no blockers.

- One line 30, I'd take off the px measurement. Don't need to define the 0.
- I'm not sure the list structure is needed. I'd do something like:
```
<div class="helpful-tools-list">
  <a class="helpful-tools-link"></a>
</div>
```


How about an InvalidArgumentException?


@micdoodle8 ooo nice change


much indent


recommit


hmm, doesn't matter I think, it works both ways


[R/irlba.R:220:1:](https://github.com/bwlewis/irlba/blob/12ff146d91c0f9ad100c1abe843740144bc1b4d6/R/irlba.R#L220) *style:* **Lines should not be more than 130 characters.**
```r
    warning("The deflation options are deprecated and have been removed as formal arugments. Please modify your code to not use them.")
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/irlba.R:298:28:](https://github.com/bwlewis/irlba/blob/12ff146d91c0f9ad100c1abe843740144bc1b4d6/R/irlba.R#L298) *style:* **Place a space before left parenthesis, except in a function call.**
```r
  fastpath <- fastpath && (("Matrix" %in% attributes(class(A)) && ("dgCMatrix" %in% class(A))) || "matrix" %in% class(A))
                           ^
```
[R/irlba.R:306:1:](https://github.com/bwlewis/irlba/blob/12ff146d91c0f9ad100c1abe843740144bc1b4d6/R/irlba.R#L306) *style:* **Lines should not be more than 130 characters.**
```r
      if (verbose) message("Initializing starting vector v with samples from standard normal distribution.\nUse `set.seed` first for reproducibility.")
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```


:heart:


@aendrew Yes it will, very exciting! I wrote some of my first thoughts on [Medium](https://medium.com/@styfle/promises-in-node-js-8-x-core-d6a8a93e85a2).


add File README


Yeah, initially I was using a library that converted standard string like `true`, `T`, `yes`, `Y`, `0` to the `true` boolean.  However, this seemed like it too took many values (since ints were being converted to booleans) and then a lot of string value as wells; with that information I thought that simply using the golang reserved `true`/`false` for boolean. Thoughts @linsun?


Looks like this commit has gone stale - I'll update it for you.


Heh, the catch is that there isn't any spacing! The issue is with the `background-size` property of `.contact`.


@radfast ooo nice change, is this going to be a 1.8+ feature or 1.7.10 too?


You are leaking the temp bitmap.
You are probably not aware of this: BBitmaps are expensive, since they create a full drawing context and thread in the app_server. You could attach a BView to a BBitmap and use that for drawing in the BBitmap. There is a flag B_BITMAP_NO_SERVER_LINK (IIRC) which you can use for the temp BBitmap. This bitmap is not drawable, but ImportBits() should work, I hope, if memory serves.
Even better would be to extend BIconUtils::GetVectoryIcon() in such a way that it allows to render only a cropped portion of the icon.


Is this version compatible with v7.x.x ??

If not, are you planning to push an updated version anytime soon, like immediately??


@monicasee Hold on, I don't think I approved applying `volatile` to the completion counters. It actually spits bunch of warnings like this (probably at per-obj build, where OPA is used for manipulating the counter):
```
In file included from /home/hajimefu/src/mpich/src/mpid/ch4/src/ch4_request.h:14:0,
                 from /home/hajimefu/src/mpich/src/mpid/ch4/include/mpidch4.h:249,
                 from /home/hajimefu/src/mpich/src/mpid/ch4/include/mpidpost.h:15,
                 from /home/hajimefu/src/mpich/src/include/mpiimpl.h:234,
                 from /home/hajimefu/src/mpich/src/mpi/coll/gatherv.c:8:
/home/hajimefu/src/mpich/src/mpid/ch4/src/ch4_impl.h:650:30: warning: assignment discards ‘volatile’ qualifier from pointer target type
         *local_cmpl_cnts_ptr = &MPIDI_CH4U_WIN(win, local_cmpl_cnts);
                              ^
In file included from /home/hajimefu/src/mpich/src/openpa/src/primitives/opa_gcc_intel_32_64.h:11:0,
                 from /home/hajimefu/src/mpich/src/openpa/src/opa_primitives.h:106,
                 from /home/hajimefu/src/mpich/src/include/mpiimpl.h:137,
                 from /home/hajimefu/src/mpich/src/mpi/coll/bcast.c:8:
/home/hajimefu/src/mpich/src/openpa/src/primitives/opa_gcc_intel_32_64_ops.h:134:39: note: expected ‘struct OPA_int_t *’ but argument is \
of type ‘volatile struct MPIR_cc_t *’
 #define OPA_fetch_and_decr_int_by_faa OPA_fetch_and_decr_int
                                       ^
/home/hajimefu/src/mpich/src/openpa/src/primitives/opa_emulated.h:118:24: note: in expansion of macro ‘OPA_fetch_and_decr_int_by_faa’
 static _opa_inline int OPA_fetch_and_decr_int_by_faa(OPA_int_t *ptr)
                        ^
```
I would propose simply reverting this commit.


lgtm! :-)


should be merged with executeFromExecute


Also I think it's worth extracting some common parts from these two `let` lambdas


So Main is stable and ready to create for a release version while develop is where things get added in.


> It uses Linq, how is our current opinion about that? Do we still want to avoid it?
Would be easy in this case.

Yes, I would prefer to avoid LINQ as much as possible. It can still easily generate garbage under IL2CPP.

> As you can see I put a lock around the dictionary manipulation to prepare for async/parallel processing.

This makes sense. Good catch!

>  I would like to get rid of CanHandle() and ShouldCache().

This sort of breaks the interface. What does a disk cache implementation look like? For various platforms? What's the solution without this interface?


This class must implement the abstract method `_getTrait()` defined in the trait.


Kann irgendwie die aktuelle Route abgefragt werden? Ich geh aktuell nur davon aus, dass sich der Benutzer auf der Startseite (welche auch immer das ist) befindet. Müsste aber eigentlich sowas wie:
@if(($current_page == "/" && $settings_home_page == $menue_item->page) || $current_page == $menue_item->page)
@LKDevelopment


@mc1100 This was from the playstore and non-beta?


should also pass optional executor.subscribe.bind(executor)


:metal:
:sparkles:
:cake:


bzw eigentlich nur der erste Teil der Route. Könnte ja auch "/board/category/..." sein.


a simple demo


😓 sorry about that! looking forward to being able to publish transpiled versions...


In TM2, I've been able to support multiple roles. https://github.com/hotosm/osm-tasking-manager2/commit/5bff3803d7d32a5ceab1d36d74ea9e6babfe7bcd
Any reason why you chose not to support this anymore?


Bluemix toolchain: An unknown tool deployed [testRepo-Traceability-jerome-lanneluc](https://github.com/idsdev/testRepo-Traceability-jerome-lanneluc/releases/tag/deployed-2-env-ibm-yp-us-south-user-ibm.com-prod-20170512-145712 "deployed-2-env-ibm-yp-us-south-user-ibm.com-prod-20170512-145712") to [prod](https://console.ng.bluemix.net/apps/6e3bc311-c83d-4cd1-a457-99d9a5f20f19 "ibm:yp:us-south:user@ibm.com:prod"), including this commit


isn't this breaking the checkstyle rules?


Bluemix toolchain: An unknown tool deployed [testRepo-Traceability-jerome-lanneluc](https://github.com/idsdev/testRepo-Traceability-jerome-lanneluc/releases/tag/deployed-2-env-ibm-yp-us-south-user-ibm.com-prod-20170512-145726 "deployed-2-env-ibm-yp-us-south-user-ibm.com-prod-20170512-145726") to [prod](https://console.ng.bluemix.net/apps/6e3bc311-c83d-4cd1-a457-99d9a5f20f19 "ibm:yp:us-south:user@ibm.com:prod"), including this commit