Skip to content

Commit

Permalink
Added support for userid in plone.api.env.adopt_user. Refs #204
Browse files Browse the repository at this point in the history
  • Loading branch information
jaroel committed Jun 11, 2015
1 parent 6bbb853 commit 5d5e380
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 16 deletions.
3 changes: 3 additions & 0 deletions docs/CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ Changelog
1.3.3 (unreleased)
------------------

- plone.api.env.adopt_user now supports userid too. Refs #204.
[jaroel]

- api.plone.org docs point to docs.plone.org/external/plone.api/docs/. Refs #202
[jaroel]

Expand Down
25 changes: 13 additions & 12 deletions src/plone/api/env.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@
IS_TEST = None


@at_least_one_of('username', 'user')
@mutually_exclusive_parameters('username', 'user')
def adopt_user(username=None, user=None):
@at_least_one_of('username', 'user', 'userid')
@mutually_exclusive_parameters('username', 'user', 'userid')
def adopt_user(username=None, user=None, userid=None):
"""Context manager for temporarily switching user inside a block.
:param user: User object to switch to inside block.
Expand All @@ -37,16 +37,17 @@ def adopt_user(username=None, user=None):
plone = portal.get()
acls = [plone.acl_users, plone.__parent__.acl_users]

if username is None:
for acl_users in acls:
unwrapped = acl_users.getUserById(user.getId())
if unwrapped:
break
if username is not None:
accessor = 'getUser' # acl_users.getUser
key = username
else:
for acl_users in acls:
unwrapped = acl_users.getUser(username)
if unwrapped:
break
accessor = 'getUserById' # acl_users.getUserById
key = userid or user.getId()

for acl_users in acls:
unwrapped = getattr(acl_users, accessor)(key)
if unwrapped:
break

if unwrapped is None:
raise UserNotFoundError
Expand Down
15 changes: 13 additions & 2 deletions src/plone/api/tests/test_env.py
Original file line number Diff line number Diff line change
Expand Up @@ -419,7 +419,18 @@ def test_zope_version(self):
'^(\d+\.\d+|\d+\.\d+\.\d+)(a\d+|b\d+|rc\d+)?$'
)

def test_adopt_user_different_username(self):
user = api.user.get(userid=TEST_USER_ID)
def test_adopt_user_by_userid(self):
with api.env.adopt_user(userid=TEST_USER_ID):
self.assertEqual(api.user.get_current().getId(), TEST_USER_ID)

def test_adopt_user_by_username(self):
acl_users = api.portal.get().acl_users
user = acl_users.getUserById(TEST_USER_ID)
with api.env.adopt_user(username=user.getUserName()):
self.assertEqual(api.user.get_current().getId(), TEST_USER_ID)

def test_adopt_user_by_user(self):
acl_users = api.portal.get().acl_users
user = acl_users.getUserById(TEST_USER_ID)
with api.env.adopt_user(user=user):
self.assertEqual(api.user.get_current().getId(), TEST_USER_ID)
4 changes: 2 additions & 2 deletions src/plone/api/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -198,8 +198,8 @@ def is_anonymous():
return bool(portal.get_tool('portal_membership').isAnonymousUser())


@mutually_exclusive_parameters('username', 'user')
def get_roles(username=None, user=None, obj=None, inherit=True):
@mutually_exclusive_parameters('username', 'user', 'userid')
def get_roles(username=None, user=None, obj=None, inherit=True, userid=None):
"""Get user's site-wide or local roles.
Arguments ``username`` and ``user`` are mutually exclusive. You
Expand Down

4 comments on commit 5d5e380

@gforcada
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jaroel Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.api/12//violations

ERROR: /home/jenkins/workspace/package-plone.api@2/src/plone/api/content.py Imports are incorrectly sorted.
src/plone/api/content.py:0:1: I001 found unsorted imports
src/plone/api/content.py:90:36: S001 found %s formatter
src/plone/api/content.py:95:13: Q000 Remove bad quotes.
src/plone/api/content.py:96:13: Q000 Remove bad quotes.
src/plone/api/content.py:97:13: Q000 Remove bad quotes.
src/plone/api/content.py:301:1: C901 '_wf_transitions_for' is too complex (12)
src/plone/api/content.py:393:17: Q000 Remove bad quotes.
src/plone/api/content.py:394:17: Q000 Remove bad quotes.
src/plone/api/content.py:421:17: Q000 Remove bad quotes.
src/plone/api/content.py:460:13: Q000 Remove bad quotes.
src/plone/api/content.py:461:13: Q000 Remove bad quotes.
ERROR: /home/jenkins/workspace/package-plone.api@2/src/plone/api/env.py Imports are incorrectly sorted.
src/plone/api/env.py:0:1: I001 found unsorted imports
ERROR: /home/jenkins/workspace/package-plone.api@2/src/plone/api/portal.py Imports are incorrectly sorted.
src/plone/api/portal.py:0:1: I001 found unsorted imports
src/plone/api/portal.py:54:9: Q000 Remove bad quotes.
src/plone/api/portal.py:55:9: Q000 Remove bad quotes.
src/plone/api/portal.py:56:9: Q000 Remove bad quotes.
src/plone/api/portal.py:102:13: Q000 Remove bad quotes.
src/plone/api/portal.py:103:13: Q000 Remove bad quotes.
src/plone/api/portal.py:250:13: Q000 Remove bad quotes.
src/plone/api/portal.py:251:13: Q000 Remove bad quotes.
ERROR: /home/jenkins/workspace/package-plone.api@2/src/plone/api/user.py Imports are incorrectly sorted.
src/plone/api/user.py:0:1: I001 found unsorted imports
src/plone/api/user.py:66:13: Q000 Remove bad quotes.
src/plone/api/user.py:67:13: Q000 Remove bad quotes.
src/plone/api/user.py:353:37: Q000 Remove bad quotes.
src/plone/api/user.py:396:37: Q000 Remove bad quotes.
src/plone/api/validation.py:20:13: Q000 Remove bad quotes.
src/plone/api/validation.py:21:13: Q000 Remove bad quotes.
src/plone/api/validation.py:22:32: Q000 Remove bad quotes.
src/plone/api/validation.py:66:21: Q000 Remove bad quotes.
src/plone/api/validation.py:67:25: Q000 Remove bad quotes.
src/plone/api/validation.py:96:21: Q000 Remove bad quotes.
src/plone/api/validation.py:97:25: Q000 Remove bad quotes.
src/plone/api/validation.py:127:21: Q000 Remove bad quotes.
src/plone/api/validation.py:128:21: Q000 Remove bad quotes.
src/plone/api/validation.py:128:45: Q000 Remove bad quotes.
ERROR: /home/jenkins/workspace/package-plone.api@2/src/plone/api/tests/base.py Imports are incorrectly sorted.
src/plone/api/tests/base.py:0:1: I001 found unsorted imports
src/plone/api/tests/base.py:23:47: Q000 Remove bad quotes.
src/plone/api/tests/base.py:43:28: Q000 Remove bad quotes.
src/plone/api/tests/base.py:45:28: Q000 Remove bad quotes.
ERROR: /home/jenkins/workspace/package-plone.api@2/src/plone/api/tests/test_content.py Imports are incorrectly sorted.
src/plone/api/tests/test_content.py:0:1: I001 found unsorted imports
src/plone/api/tests/test_content.py:133:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:154:9: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:195:9: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:260:37: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:731:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:732:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:733:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:867:17: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:876:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:877:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:878:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:879:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:880:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:881:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:882:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:883:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:884:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:885:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:886:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:887:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:888:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:889:13: Q000 Remove bad quotes.
ERROR: /home/jenkins/workspace/package-plone.api@2/src/plone/api/tests/test_doctests.py Imports are incorrectly sorted.
src/plone/api/tests/test_doctests.py:0:1: I001 found unsorted imports
src/plone/api/tests/test_doctests.py:108:13: T001 print statement found.
ERROR: /home/jenkins/workspace/package-plone.api@2/src/plone/api/tests/test_env.py Imports are incorrectly sorted.
src/plone/api/tests/test_env.py:0:1: I001 found unsorted imports
src/plone/api/tests/test_env.py:30:14: D001 found declarePublic replace it with AccessControl.ClassSecurityInfo.public
src/plone/api/tests/test_env.py:31:14: D001 found declareProtected replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:32:14: D001 found declareProtected replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:33:14: D001 found declareProtected replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:34:14: D001 found declarePrivate replace it with AccessControl.ClassSecurityInfo.private
ERROR: /home/jenkins/workspace/package-plone.api@2/src/plone/api/tests/test_group.py Imports are incorrectly sorted.
src/plone/api/tests/test_group.py:0:1: I001 found unsorted imports
ERROR: /home/jenkins/workspace/package-plone.api@2/src/plone/api/tests/test_portal.py Imports are incorrectly sorted.
src/plone/api/tests/test_portal.py:0:1: I001 found unsorted imports
src/plone/api/tests/test_portal.py:39:16: P002 found "hasattr", consider replacing it
src/plone/api/tests/test_portal.py:98:41: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:98:57: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:136:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:137:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:138:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:139:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:140:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:141:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:142:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:143:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:144:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:145:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:146:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:147:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:148:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:149:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:150:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:151:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:152:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:153:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:154:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:155:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:156:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:157:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:158:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:159:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:160:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:161:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:162:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:163:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:164:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:165:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:166:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:196:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:206:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:215:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:216:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:217:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:231:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:232:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:247:27: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:248:24: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:249:25: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:263:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:264:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:277:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:278:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:297:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:298:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:470:17: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:477:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:478:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:479:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:480:13: Q000 Remove bad quotes.
ERROR: /home/jenkins/workspace/package-plone.api@2/src/plone/api/tests/test_user.py Imports are incorrectly sorted.
src/plone/api/tests/test_user.py:0:1: I001 found unsorted imports
src/plone/api/tests/test_user.py:636:20: Q000 Remove bad quotes.
src/plone/api/tests/test_validation.py:37:14: D001 found assertEquals replace it with assertEqual
src/plone/api/tests/test_validation.py:40:14: D001 found assertEquals replace it with assertEqual
src/plone/api/tests/test_validation.py:65:14: D001 found assertEquals replace it with assertEqual
src/plone/api/tests/test_validation.py:70:14: D001 found assertEquals replace it with assertEqual
src/plone/api/tests/test_validation.py:74:14: D001 found assertEquals replace it with assertEqual
src/plone/api/tests/test_validation.py:79:14: D001 found assertEquals replace it with assertEqual
src/plone/api/tests/test_validation.py:84:14: D001 found assertEquals replace it with assertEqual
src/plone/api/tests/test_validation.py:91:14: D001 found assertEquals replace it with assertEqual
src/plone/api/tests/test_validation.py:98:14: D001 found assertEquals replace it with assertEqual
src/plone/api/tests/test_validation.py:123:14: D001 found assertEquals replace it with assertEqual
src/plone/api/tests/test_validation.py:124:14: D001 found assertEquals replace it with assertEqual
src/plone/api/tests/test_validation.py:131:14: D001 found assertEquals replace it with assertEqual
src/plone/api/tests/test_validation.py:132:14: D001 found assertEquals replace it with assertEqual
src/plone/api/tests/test_validation.py:133:14: D001 found assertEquals replace it with assertEqual
src/plone/api/tests/test_validation.py:159:14: D001 found assertEquals replace it with assertEqual
src/plone/api/tests/test_validation.py:160:14: D001 found assertEquals replace it with assertEqual
src/plone/api/tests/test_validation.py:165:14: D001 found assertEquals replace it with assertEqual
src/plone/api/tests/test_validation.py:166:14: D001 found assertEquals replace it with assertEqual
src/plone/api/tests/test_validation.py:167:14: D001 found assertEquals replace it with assertEqual

You can run that yourself using buildout.coredev experimental/qa.cfg config file.

@jenkins-plone-org
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jaroel Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.api/10/violations

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

Follow these instructions to reproduce it locally.

@jenkins-plone-org
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jaroel Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.api/6/violations

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

Follow these instructions to reproduce it locally.

@jenkins-plone-org
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jaroel Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.api/155/violations

src/plone/api/content.py:4:1: I001 isort found an import in the wrong position
src/plone/api/content.py:5:1: I001 isort found an import in the wrong position
src/plone/api/content.py:23:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/content.py:41:13: C816 missing trailing comma in Python 3.6+
src/plone/api/content.py:90:21: S001 found module formatter
src/plone/api/content.py:90:72: C812 missing trailing comma
src/plone/api/content.py:95:13: Q000 Remove bad quotes.
src/plone/api/content.py:96:13: Q000 Remove bad quotes.
src/plone/api/content.py:97:13: Q000 Remove bad quotes.
src/plone/api/content.py:97:68: C812 missing trailing comma
src/plone/api/content.py:255:55: C812 missing trailing comma
src/plone/api/content.py:301:1: C901 '_wf_transitions_for' is too complex (12)
src/plone/api/content.py:393:17: Q000 Remove bad quotes.
src/plone/api/content.py:394:17: Q000 Remove bad quotes.
src/plone/api/content.py:394:73: C812 missing trailing comma
src/plone/api/content.py:421:17: Q000 Remove bad quotes.
src/plone/api/content.py:424:18: C812 missing trailing comma
src/plone/api/content.py:460:13: Q000 Remove bad quotes.
src/plone/api/content.py:461:13: Q000 Remove bad quotes.
src/plone/api/content.py:461:72: C812 missing trailing comma
src/plone/api/portal.py:5:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:6:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:7:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:9:1: I001 isort found an import in the wrong position
src/plone/api/portal.py:23:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/portal.py:32:51: C812 missing trailing comma
src/plone/api/portal.py:54:9: Q000 Remove bad quotes.
src/plone/api/portal.py:55:9: Q000 Remove bad quotes.
src/plone/api/portal.py:56:9: Q000 Remove bad quotes.
src/plone/api/portal.py:56:46: C812 missing trailing comma
src/plone/api/portal.py:102:13: Q000 Remove bad quotes.
src/plone/api/portal.py:103:13: Q000 Remove bad quotes.
src/plone/api/portal.py:103:49: C812 missing trailing comma
src/plone/api/portal.py:161:23: C812 missing trailing comma
src/plone/api/portal.py:220:20: T000 Todo note found.
src/plone/api/portal.py:241:37: Q000 Remove bad quotes.
src/plone/api/portal.py:250:13: Q000 Remove bad quotes.
src/plone/api/portal.py:251:13: Q000 Remove bad quotes.
src/plone/api/portal.py:251:51: C812 missing trailing comma
src/plone/api/env.py:18:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/user.py:5:1: I001 isort found an import in the wrong position
src/plone/api/user.py:26:20: C812 missing trailing comma
src/plone/api/user.py:66:13: Q000 Remove bad quotes.
src/plone/api/user.py:67:13: Q000 Remove bad quotes.
src/plone/api/user.py:67:64: C812 missing trailing comma
src/plone/api/user.py:85:30: C812 missing trailing comma
src/plone/api/user.py:122:31: C812 missing trailing comma
src/plone/api/user.py:284:67: C812 missing trailing comma
src/plone/api/user.py:353:37: Q000 Remove bad quotes.
src/plone/api/user.py:396:37: Q000 Remove bad quotes.
src/plone/api/validation.py:20:13: Q000 Remove bad quotes.
src/plone/api/validation.py:21:13: Q000 Remove bad quotes.
src/plone/api/validation.py:22:32: Q000 Remove bad quotes.
src/plone/api/validation.py:22:54: C812 missing trailing comma
src/plone/api/validation.py:66:21: Q000 Remove bad quotes.
src/plone/api/validation.py:67:25: Q000 Remove bad quotes.
src/plone/api/validation.py:67:44: C812 missing trailing comma
src/plone/api/validation.py:96:21: Q000 Remove bad quotes.
src/plone/api/validation.py:97:25: Q000 Remove bad quotes.
src/plone/api/validation.py:97:50: C812 missing trailing comma
src/plone/api/validation.py:127:21: Q000 Remove bad quotes.
src/plone/api/validation.py:128:21: Q000 Remove bad quotes.
src/plone/api/validation.py:128:45: Q000 Remove bad quotes.
src/plone/api/validation.py:128:73: C812 missing trailing comma
src/plone/api/group.py:19:14: C812 missing trailing comma
src/plone/api/group.py:43:32: C812 missing trailing comma
src/plone/api/tests/test_validation.py:37:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:40:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:54:25: C812 missing trailing comma
src/plone/api/tests/test_validation.py:65:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:70:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:74:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:79:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:84:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:91:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:98:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:123:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:124:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:131:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:132:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:133:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:159:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:160:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:165:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:166:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/test_validation.py:167:14: D001 found assertEquals( replace it with assertEqual
src/plone/api/tests/base.py:10:1: I001 isort found an import in the wrong position
src/plone/api/tests/base.py:11:1: I001 isort found an import in the wrong position
src/plone/api/tests/base.py:23:47: Q000 Remove bad quotes.
src/plone/api/tests/base.py:43:28: Q000 Remove bad quotes.
src/plone/api/tests/base.py:45:28: Q000 Remove bad quotes.
src/plone/api/tests/test_user.py:9:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_user.py:68:53: C812 missing trailing comma
src/plone/api/tests/test_user.py:82:30: C812 missing trailing comma
src/plone/api/tests/test_user.py:130:42: C812 missing trailing comma
src/plone/api/tests/test_user.py:139:41: C812 missing trailing comma
src/plone/api/tests/test_user.py:143:52: C812 missing trailing comma
src/plone/api/tests/test_user.py:152:21: C812 missing trailing comma
src/plone/api/tests/test_user.py:156:32: C812 missing trailing comma
src/plone/api/tests/test_user.py:240:33: C812 missing trailing comma
src/plone/api/tests/test_user.py:274:24: C812 missing trailing comma
src/plone/api/tests/test_user.py:286:24: C812 missing trailing comma
src/plone/api/tests/test_user.py:298:24: C812 missing trailing comma
src/plone/api/tests/test_user.py:305:26: C812 missing trailing comma
src/plone/api/tests/test_user.py:315:30: T000 Todo note found.
src/plone/api/tests/test_user.py:317:51: C812 missing trailing comma
src/plone/api/tests/test_user.py:385:21: C812 missing trailing comma
src/plone/api/tests/test_user.py:392:26: C812 missing trailing comma
src/plone/api/tests/test_user.py:405:72: C812 missing trailing comma
src/plone/api/tests/test_user.py:409:65: C812 missing trailing comma
src/plone/api/tests/test_user.py:490:24: C812 missing trailing comma
src/plone/api/tests/test_user.py:495:24: C812 missing trailing comma
src/plone/api/tests/test_user.py:636:20: Q000 Remove bad quotes.
src/plone/api/tests/test_user.py:643:63: C812 missing trailing comma
src/plone/api/tests/test_portal.py:4:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:5:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:6:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:7:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_portal.py:39:16: P002 found "hasattr", consider replacing it
src/plone/api/tests/test_portal.py:98:41: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:98:57: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:136:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:137:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:138:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:139:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:140:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:141:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:142:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:143:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:144:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:145:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:146:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:147:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:148:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:149:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:150:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:151:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:152:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:153:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:154:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:155:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:156:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:157:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:158:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:159:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:160:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:161:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:162:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:163:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:164:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:165:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:166:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:196:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:206:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:215:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:216:20: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:217:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:218:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:231:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:232:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:233:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:247:27: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:248:24: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:249:25: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:250:22: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:263:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:264:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:265:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:277:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:278:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:279:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:288:38: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:291:38: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:297:23: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:298:21: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:299:18: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:434:34: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:470:17: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:471:52: C812 missing trailing comma
src/plone/api/tests/test_portal.py:472:14: C812 missing trailing comma
src/plone/api/tests/test_portal.py:477:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:478:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:479:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:480:13: Q000 Remove bad quotes.
src/plone/api/tests/test_portal.py:534:23: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:8:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:9:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:19:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:20:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:21:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_content.py:26:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_content.py:108:53: C812 missing trailing comma
src/plone/api/tests/test_content.py:127:30: C812 missing trailing comma
src/plone/api/tests/test_content.py:133:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:134:33: C812 missing trailing comma
src/plone/api/tests/test_content.py:149:30: C812 missing trailing comma
src/plone/api/tests/test_content.py:154:9: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:178:38: C812 missing trailing comma
src/plone/api/tests/test_content.py:195:9: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:260:37: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:293:28: C812 missing trailing comma
src/plone/api/tests/test_content.py:429:35: C812 missing trailing comma
src/plone/api/tests/test_content.py:475:25: C812 missing trailing comma
src/plone/api/tests/test_content.py:674:48: C812 missing trailing comma
src/plone/api/tests/test_content.py:681:48: C812 missing trailing comma
src/plone/api/tests/test_content.py:731:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:732:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:733:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:733:22: C812 missing trailing comma
src/plone/api/tests/test_content.py:740:34: C812 missing trailing comma
src/plone/api/tests/test_content.py:860:32: C812 missing trailing comma
src/plone/api/tests/test_content.py:867:17: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:868:21: C812 missing trailing comma
src/plone/api/tests/test_content.py:869:14: C812 missing trailing comma
src/plone/api/tests/test_content.py:876:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:877:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:878:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:879:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:880:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:881:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:882:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:883:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:884:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:885:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:886:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:887:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:888:13: Q000 Remove bad quotes.
src/plone/api/tests/test_content.py:889:13: Q000 Remove bad quotes.
src/plone/api/tests/test_group.py:4:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_group.py:195:33: C812 missing trailing comma
src/plone/api/tests/test_env.py:9:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_env.py:30:14: D001 found declarePublic( replace it with AccessControl.ClassSecurityInfo.public
src/plone/api/tests/test_env.py:31:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:32:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:33:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/api/tests/test_env.py:34:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
src/plone/api/tests/test_env.py:408:59: C812 missing trailing comma
src/plone/api/tests/test_env.py:419:59: C812 missing trailing comma
src/plone/api/tests/test_doctests.py:6:1: I001 isort found an import in the wrong position
src/plone/api/tests/test_doctests.py:22:1: I003 isort expected 1 blank line in imports, found 0
src/plone/api/tests/test_doctests.py:66:72: C812 missing trailing comma
src/plone/api/tests/test_doctests.py:92:36: C812 missing trailing comma
src/plone/api/tests/test_doctests.py:108:13: T001 print statement found.

Follow these instructions to reproduce it locally.

Please sign in to comment.