Skip to content

Commit

Permalink
Merge pull request #42 from batlock666/1.5.x
Browse files Browse the repository at this point in the history
Handle ValueError exceptions when doing a range request.
  • Loading branch information
jensens committed Jun 29, 2017
2 parents 8da4b67 + 233faa2 commit b51e4ab
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 9 deletions.
4 changes: 3 additions & 1 deletion CHANGES.rst
Expand Up @@ -10,7 +10,9 @@ New:

Fixes:

- *add item here*
- Handle ``ValueError`` exceptions when doing a range request.
This fixes `issue #39 <https://github.com/plone/plone.app.blob/issues/39>`_.
[batlock666]


1.5.17 (2016-02-15)
Expand Down
19 changes: 11 additions & 8 deletions src/plone/app/blob/download.py
Expand Up @@ -71,12 +71,15 @@ def handleRequestRange(instance, length, REQUEST, RESPONSE):
ranges = None
RESPONSE.setHeader('Accept-Ranges', 'bytes')
if ranges and len(ranges) == 1:
[(start, end)] = expandRanges(ranges, length)
size = end - start
RESPONSE.setHeader('Content-Length', size)
RESPONSE.setHeader(
'Content-Range',
'bytes %d-%d/%d' % (start, end - 1, length))
RESPONSE.setStatus(206) # Partial content
return dict(start=start, end=end)
try:
[(start, end)] = expandRanges(ranges, length)
size = end - start
RESPONSE.setHeader('Content-Length', size)
RESPONSE.setHeader(
'Content-Range',
'bytes %d-%d/%d' % (start, end - 1, length))
RESPONSE.setStatus(206) # Partial content
return dict(start=start, end=end)
except ValueError:
return {}
return {}
15 changes: 15 additions & 0 deletions src/plone/app/blob/tests/test_integration.py
Expand Up @@ -149,6 +149,21 @@ def testRangeSupport(self):
iterator = blob.download(request)
self.assertEqual(data[-20:], ''.join(iterator))

def testOutsideRange(self):
# ranges outside the file size also have to work
blob = self.folder['blob']
blob.setTitle('foo')
blob.setFile(getData('plone.pdf'))
data = blob.getFile().getBlob().open('r').read()
l = len(data)
request = self.folder.REQUEST
request.environ['HTTP_RANGE'] = 'bytes={}-{}'.format(l * 2, l * 3)
iterator = blob.download(request)
self.assertEqual(data, ''.join(iterator))
request.environ['HTTP_RANGE'] = 'bytes={}-'.format(l * 2)
iterator = blob.download(request)
self.assertEqual(data, ''.join(iterator))

def testIcon(self):
blob = self.folder.blob
blob.update(file=getImage())
Expand Down

1 comment on commit b51e4ab

@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.

@jensens Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.app.blob/34/violations

src/plone/__init__.py:0:1: C101 Coding magic comment not found
src/plone/app/__init__.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/config.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/iterators.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/iterators.py:4:1: I001 isort found an import in the wrong position
src/plone/app/blob/iterators.py:5:1: I001 isort found an import in the wrong position
src/plone/app/blob/iterators.py:12:9: D001 found implements( replace it with zope.interface.implementer
src/plone/app/blob/scale.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/scale.py:4:1: I003 isort expected 1 blank line in imports, found 0
src/plone/app/blob/scale.py:4:1: I003 isort expected 1 blank line in imports, found 0
src/plone/app/blob/scale.py:4:1: I001 isort found an import in the wrong position
src/plone/app/blob/scale.py:5:1: I001 isort found an import in the wrong position
src/plone/app/blob/scale.py:6:1: I001 isort found an import in the wrong position
src/plone/app/blob/scale.py:7:1: I001 isort found an import in the wrong position
src/plone/app/blob/scale.py:8:1: I001 isort found an import in the wrong position
src/plone/app/blob/scale.py:9:1: I001 isort found an import in the wrong position
src/plone/app/blob/scale.py:10:1: I001 isort found an import in the wrong position
src/plone/app/blob/scale.py:11:1: I001 isort found an import in the wrong position
src/plone/app/blob/scale.py:16:17: Q000 Remove bad quotes.
src/plone/app/blob/scale.py:22:5: D001 found implements( replace it with zope.interface.implementer
src/plone/app/blob/scale.py:23:5: D001 found adapts( replace it with zope.component.adapter
src/plone/app/blob/scale.py:31:17: E128 continuation line under-indented for visual indent
src/plone/app/blob/scale.py:32:17: E128 continuation line under-indented for visual indent
src/plone/app/blob/scale.py:44:17: E128 continuation line under-indented for visual indent
src/plone/app/blob/scale.py:65:5: D001 found implements( replace it with zope.interface.implementer
src/plone/app/blob/scale.py:66:5: D001 found adapts( replace it with zope.component.adapter
src/plone/app/blob/scale.py:77:17: E128 continuation line under-indented for visual indent
src/plone/app/blob/content.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/content.py:1:1: I001 isort found an import in the wrong position
src/plone/app/blob/content.py:2:1: I001 isort found an import in the wrong position
src/plone/app/blob/content.py:3:1: I001 isort found an import in the wrong position
src/plone/app/blob/content.py:4:1: I001 isort found an import in the wrong position
src/plone/app/blob/content.py:5:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/content.py:8:1: I001 isort found an import in the wrong position
src/plone/app/blob/content.py:11:1: I003 isort expected 1 blank line in imports, found 0
src/plone/app/blob/content.py:11:1: I003 isort expected 1 blank line in imports, found 0
src/plone/app/blob/content.py:16:1: I001 isort found an import in the wrong position
src/plone/app/blob/content.py:17:1: I001 isort found an import in the wrong position
src/plone/app/blob/content.py:18:1: I001 isort found an import in the wrong position
src/plone/app/blob/content.py:19:1: I001 isort found an import in the wrong position
src/plone/app/blob/content.py:20:1: I001 isort found an import in the wrong position
src/plone/app/blob/content.py:21:1: I001 isort found an import in the wrong position
src/plone/app/blob/content.py:22:1: I001 isort found an import in the wrong position
src/plone/app/blob/content.py:24:1: I001 isort found an import in the wrong position
src/plone/app/blob/content.py:25:1: I001 isort found an import in the wrong position
src/plone/app/blob/content.py:26:1: I001 isort found an import in the wrong position
src/plone/app/blob/content.py:27:1: I001 isort found an import in the wrong position
src/plone/app/blob/content.py:28:1: I001 isort found an import in the wrong position
src/plone/app/blob/content.py:29:1: I001 isort found an import in the wrong position
src/plone/app/blob/content.py:76:5: D001 found implements( replace it with zope.interface.implementer
src/plone/app/blob/content.py:88:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/app/blob/content.py:101:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
src/plone/app/blob/content.py:108:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/app/blob/content.py:115:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/app/blob/content.py:129:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
src/plone/app/blob/content.py:146:17: E128 continuation line under-indented for visual indent
src/plone/app/blob/content.py:149:9: B901 blind except: statement
src/plone/app/blob/content.py:151:16: E128 continuation line under-indented for visual indent
src/plone/app/blob/content.py:154:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/app/blob/content.py:183:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/app/blob/content.py:189:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/app/blob/content.py:195:14: D001 found declarePublic( replace it with AccessControl.ClassSecurityInfo.public
src/plone/app/blob/content.py:215:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
src/plone/app/blob/content.py:248:1: E305 expected 2 blank lines after class or function definition, found 1
src/plone/app/blob/interfaces.py:10:37: Q000 Remove bad quotes.
src/plone/app/blob/interfaces.py:13:17: Q000 Remove bad quotes.
src/plone/app/blob/interfaces.py:14:23: Q000 Remove bad quotes.
src/plone/app/blob/__init__.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/__init__.py:1:1: I001 isort found an import in the wrong position
src/plone/app/blob/__init__.py:22:27: Q000 Remove bad quotes.
src/plone/app/blob/__init__.py:22:27: S001 found module formatter
src/plone/app/blob/__init__.py:23:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/__init__.py:24:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/__init__.py:25:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/__init__.py:26:13: E124 closing bracket does not match visual indentation
src/plone/app/blob/__init__.py:33:27: Q000 Remove bad quotes.
src/plone/app/blob/__init__.py:33:27: S001 found module formatter
src/plone/app/blob/__init__.py:34:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/__init__.py:35:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/__init__.py:36:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/__init__.py:37:13: E124 closing bracket does not match visual indentation
src/plone/app/blob/markings.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/markings.py:4:1: I001 isort found an import in the wrong position
src/plone/app/blob/markings.py:7:1: I001 isort found an import in the wrong position
src/plone/app/blob/markings.py:8:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/markings.py:9:1: I001 isort found an import in the wrong position
src/plone/app/blob/markings.py:12:1: I003 isort expected 1 blank line in imports, found 0
src/plone/app/blob/utils.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/utils.py:4:1: I001 isort found an import in the wrong position
src/plone/app/blob/utils.py:5:1: I001 isort found an import in the wrong position
src/plone/app/blob/utils.py:21:80: E501 line too long (82 > 79 characters)
src/plone/app/blob/utils.py:23:80: E501 line too long (85 > 79 characters)
src/plone/app/blob/monkey.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/monkey.py:7:1: I001 isort found an import in the wrong position
src/plone/app/blob/monkey.py:8:1: I001 isort found an import in the wrong position
src/plone/app/blob/monkey.py:9:1: I001 isort found an import in the wrong position
src/plone/app/blob/monkey.py:10:1: I001 isort found an import in the wrong position
src/plone/app/blob/monkey.py:39:1: E305 expected 2 blank lines after class or function definition, found 1
src/plone/app/blob/monkey.py:45:12: P002 found "hasattr", consider replacing it
src/plone/app/blob/monkey.py:48:1: E305 expected 2 blank lines after class or function definition, found 1
src/plone/app/blob/migrations.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/migrations.py:16:1: I001 isort found an import in the wrong position
src/plone/app/blob/migrations.py:17:1: I001 isort found an import in the wrong position
src/plone/app/blob/migrations.py:42:1: C901 'makeMigrator' is too complex (15)
src/plone/app/blob/migrations.py:54:80: E501 line too long (179 > 79 characters)
src/plone/app/blob/migrations.py:82:20: P002 found "hasattr", consider replacing it
src/plone/app/blob/field.py:5:1: I001 isort found an import in the wrong position
src/plone/app/blob/field.py:7:1: I001 isort found an import in the wrong position
src/plone/app/blob/field.py:8:1: I001 isort found an import in the wrong position
src/plone/app/blob/field.py:9:1: I001 isort found an import in the wrong position
src/plone/app/blob/field.py:10:1: I001 isort found an import in the wrong position
src/plone/app/blob/field.py:11:1: I001 isort found an import in the wrong position
src/plone/app/blob/field.py:12:1: I001 isort found an import in the wrong position
src/plone/app/blob/field.py:13:1: I001 isort found an import in the wrong position
src/plone/app/blob/field.py:14:1: I001 isort found an import in the wrong position
src/plone/app/blob/field.py:15:1: I001 isort found an import in the wrong position
src/plone/app/blob/field.py:24:1: I001 isort found an import in the wrong position
src/plone/app/blob/field.py:45:12: P002 found "hasattr", consider replacing it
src/plone/app/blob/field.py:95:62: Q000 Remove bad quotes.
src/plone/app/blob/field.py:106:32: Q000 Remove bad quotes.
src/plone/app/blob/field.py:198:1: E305 expected 2 blank lines after class or function definition, found 1
src/plone/app/blob/field.py:278:16: P002 found "hasattr", consider replacing it
src/plone/app/blob/field.py:343:1: E305 expected 2 blank lines after class or function definition, found 1
src/plone/app/blob/field.py:351:1: E302 expected 2 blank lines, found 1
src/plone/app/blob/field.py:359:1: E305 expected 2 blank lines after class or function definition, found 1
src/plone/app/blob/field.py:386:12: P002 found "hasattr", consider replacing it
src/plone/app/blob/field.py:389:1: E305 expected 2 blank lines after class or function definition, found 1
src/plone/app/blob/mixins.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/mixins.py:3:1: I001 isort found an import in the wrong position
src/plone/app/blob/mixins.py:6:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/mixins.py:7:1: I001 isort found an import in the wrong position
src/plone/app/blob/mixins.py:8:1: I001 isort found an import in the wrong position
src/plone/app/blob/mixins.py:16:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/app/blob/mixins.py:29:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/app/blob/mixins.py:40:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/app/blob/mixins.py:49:80: E501 line too long (81 > 79 characters)
src/plone/app/blob/mixins.py:61:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/app/blob/mixins.py:68:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/app/blob/mixins.py:76:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/app/blob/mixins.py:84:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/app/blob/mixins.py:91:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/app/blob/mixins.py:98:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
src/plone/app/blob/mixins.py:109:14: D001 found declarePrivate( replace it with AccessControl.ClassSecurityInfo.private
src/plone/app/blob/download.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/download.py:2:1: I001 isort found an import in the wrong position
src/plone/app/blob/download.py:21:9: B901 blind except: statement
src/plone/app/blob/download.py:33:1: C901 'handleRequestRange' is too complex (14)
src/plone/app/blob/download.py:60:17: B901 blind except: statement
src/plone/app/blob/download.py:80:21: S001 found module formatter
src/plone/app/blob/browser/__init__.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/browser/size.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/browser/size.py:3:1: I001 isort found an import in the wrong position
src/plone/app/blob/browser/size.py:45:9: E731 do not assign a lambda expression, use a def
src/plone/app/blob/browser/migration.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/browser/migration.py:6:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/browser/migration.py:7:1: I001 isort found an import in the wrong position
src/plone/app/blob/browser/migration.py:8:1: I001 isort found an import in the wrong position
src/plone/app/blob/browser/migration.py:9:1: I001 isort found an import in the wrong position
src/plone/app/blob/browser/migration.py:10:1: I001 isort found an import in the wrong position
src/plone/app/blob/browser/migration.py:11:1: I001 isort found an import in the wrong position
src/plone/app/blob/browser/migration.py:12:1: I001 isort found an import in the wrong position
src/plone/app/blob/browser/migration.py:13:1: I001 isort found an import in the wrong position
src/plone/app/blob/browser/migration.py:31:19: S001 found module formatter
src/plone/app/blob/browser/migration.py:32:80: E501 line too long (87 > 79 characters)
src/plone/app/blob/browser/migration.py:37:80: E501 line too long (88 > 79 characters)
src/plone/app/blob/browser/migration.py:46:17: E128 continuation line under-indented for visual indent
src/plone/app/blob/browser/migration.py:47:17: E128 continuation line under-indented for visual indent
src/plone/app/blob/browser/maintenance.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/browser/maintenance.py:2:1: I001 isort found an import in the wrong position
src/plone/app/blob/browser/maintenance.py:3:1: I001 isort found an import in the wrong position
src/plone/app/blob/browser/maintenance.py:4:1: I001 isort found an import in the wrong position
src/plone/app/blob/browser/maintenance.py:5:1: I001 isort found an import in the wrong position
src/plone/app/blob/browser/maintenance.py:6:1: I001 isort found an import in the wrong position
src/plone/app/blob/browser/maintenance.py:7:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/browser/maintenance.py:19:19: S001 found module formatter
src/plone/app/blob/browser/maintenance.py:55:17: S001 found module formatter
src/plone/app/blob/browser/maintenance.py:66:17: S001 found module formatter
src/plone/app/blob/browser/maintenance.py:70:15: S001 found module formatter
src/plone/app/blob/browser/maintenance.py:83:17: S001 found module formatter
src/plone/app/blob/browser/maintenance.py:92:17: S001 found module formatter
src/plone/app/blob/browser/maintenance.py:96:15: S001 found module formatter
src/plone/app/blob/adapters/pdata.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/adapters/pdata.py:1:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/pdata.py:2:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/pdata.py:3:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/adapters/pdata.py:5:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/pdata.py:6:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/adapters/pdata.py:13:5: D001 found implements( replace it with zope.interface.implementer
src/plone/app/blob/adapters/pdata.py:14:5: D001 found adapts( replace it with zope.component.adapter
src/plone/app/blob/adapters/blobwrapper.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/adapters/blobwrapper.py:2:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/blobwrapper.py:3:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/adapters/blobwrapper.py:4:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/blobwrapper.py:5:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/blobwrapper.py:10:5: D001 found implements( replace it with zope.interface.implementer
src/plone/app/blob/adapters/blobwrapper.py:11:5: D001 found adapts( replace it with zope.component.adapter
src/plone/app/blob/adapters/atimage.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/adapters/atimage.py:2:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/adapters/atimage.py:3:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/atimage.py:4:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/atimage.py:9:5: D001 found adapts( replace it with zope.component.adapter
src/plone/app/blob/adapters/webdav.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/adapters/webdav.py:1:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/webdav.py:2:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/webdav.py:3:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/adapters/webdav.py:11:5: D001 found implements( replace it with zope.interface.implementer
src/plone/app/blob/adapters/webdav.py:12:5: D001 found adapts( replace it with zope.component.adapter
src/plone/app/blob/adapters/file.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/adapters/file.py:1:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/file.py:2:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/file.py:3:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/adapters/file.py:10:5: D001 found implements( replace it with zope.interface.implementer
src/plone/app/blob/adapters/file.py:11:5: D001 found adapts( replace it with zope.component.adapter
src/plone/app/blob/adapters/xmlrpc.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/adapters/xmlrpc.py:1:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/xmlrpc.py:2:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/xmlrpc.py:3:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/adapters/xmlrpc.py:4:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/xmlrpc.py:5:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/adapters/xmlrpc.py:12:5: D001 found implements( replace it with zope.interface.implementer
src/plone/app/blob/adapters/xmlrpc.py:13:5: D001 found adapts( replace it with zope.component.adapter
src/plone/app/blob/adapters/__init__.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/adapters/atfile.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/adapters/atfile.py:2:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/atfile.py:3:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/adapters/atfile.py:4:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/atfile.py:5:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/atfile.py:6:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/atfile.py:11:5: D001 found implements( replace it with zope.interface.implementer
src/plone/app/blob/adapters/atfile.py:12:5: D001 found adapts( replace it with zope.component.adapter
src/plone/app/blob/adapters/stringio.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/adapters/stringio.py:1:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/stringio.py:2:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/stringio.py:3:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/adapters/stringio.py:4:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/stringio.py:5:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/adapters/stringio.py:12:5: D001 found implements( replace it with zope.interface.implementer
src/plone/app/blob/adapters/stringio.py:13:5: D001 found adapts( replace it with zope.component.adapter
src/plone/app/blob/adapters/fileupload.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/adapters/fileupload.py:2:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/fileupload.py:3:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/fileupload.py:4:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/adapters/fileupload.py:5:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/fileupload.py:6:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/fileupload.py:7:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/fileupload.py:8:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/adapters/fileupload.py:12:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/fileupload.py:17:5: D001 found implements( replace it with zope.interface.implementer
src/plone/app/blob/adapters/fileupload.py:18:5: D001 found adapts( replace it with zope.component.adapter
src/plone/app/blob/adapters/fileupload.py:38:38: S001 found module formatter
src/plone/app/blob/adapters/ofsfile.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/adapters/ofsfile.py:2:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/ofsfile.py:3:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/adapters/ofsfile.py:4:1: I001 isort found an import in the wrong position
src/plone/app/blob/adapters/ofsfile.py:9:5: D001 found implements( replace it with zope.interface.implementer
src/plone/app/blob/adapters/ofsfile.py:10:5: D001 found adapts( replace it with zope.component.adapter
src/plone/app/blob/tests/test_maintenance.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/tests/test_maintenance.py:1:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_maintenance.py:2:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/tests/test_maintenance.py:5:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_maintenance.py:20:80: E501 line too long (86 > 79 characters)
src/plone/app/blob/tests/test_maintenance.py:21:80: E501 line too long (89 > 79 characters)
src/plone/app/blob/tests/test_maintenance.py:27:80: E501 line too long (80 > 79 characters)
src/plone/app/blob/tests/test_maintenance.py:28:80: E501 line too long (83 > 79 characters)
src/plone/app/blob/tests/test_scaling.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/tests/test_scaling.py:2:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_scaling.py:5:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_scaling.py:6:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_scaling.py:8:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_scaling.py:9:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_scaling.py:10:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_scaling.py:46:80: E501 line too long (87 > 79 characters)
src/plone/app/blob/tests/test_scaling.py:66:80: E501 line too long (87 > 79 characters)
src/plone/app/blob/tests/test_scaling.py:139:80: E501 line too long (83 > 79 characters)
src/plone/app/blob/tests/test_scaling.py:157:80: E501 line too long (83 > 79 characters)
src/plone/app/blob/tests/test_scaling.py:170:80: E501 line too long (81 > 79 characters)
src/plone/app/blob/tests/test_integration.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/tests/test_integration.py:1:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_integration.py:2:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/tests/test_integration.py:4:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_integration.py:6:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_integration.py:7:1: I003 isort expected 1 blank line in imports, found 0
src/plone/app/blob/tests/test_integration.py:23:14: D001 found assert_( replace it with assertTrue
src/plone/app/blob/tests/test_integration.py:160:41: P101 format string does contain unindexed parameters
src/plone/app/blob/tests/test_integration.py:163:41: P101 format string does contain unindexed parameters
src/plone/app/blob/tests/test_integration.py:216:80: E501 line too long (81 > 79 characters)
src/plone/app/blob/tests/test_integration.py:222:80: E501 line too long (86 > 79 characters)
src/plone/app/blob/tests/test_integration.py:230:37: S001 found module formatter
src/plone/app/blob/tests/test_integration.py:231:17: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_integration.py:236:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_integration.py:238:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_integration.py:240:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_integration.py:242:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_integration.py:244:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/bbb.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/tests/bbb.py:5:1: I003 isort expected 1 blank line in imports, found 0
src/plone/app/blob/tests/bbb.py:5:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/bbb.py:6:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_replacements.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/tests/test_replacements.py:1:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_replacements.py:2:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/tests/test_replacements.py:3:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_replacements.py:4:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_replacements.py:5:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_replacements.py:11:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_replacements.py:12:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_replacements.py:13:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_replacements.py:14:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_replacements.py:15:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_replacements.py:16:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_replacements.py:17:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_replacements.py:18:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_replacements.py:20:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_replacements.py:45:80: E501 line too long (80 > 79 characters)
src/plone/app/blob/tests/test_replacements.py:53:80: E501 line too long (80 > 79 characters)
src/plone/app/blob/tests/test_replacements.py:61:80: E501 line too long (80 > 79 characters)
src/plone/app/blob/tests/test_replacements.py:64:80: E501 line too long (80 > 79 characters)
src/plone/app/blob/tests/test_replacements.py:65:80: E501 line too long (80 > 79 characters)
src/plone/app/blob/tests/test_replacements.py:69:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_replacements.py:70:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_replacements.py:83:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_replacements.py:86:80: E501 line too long (80 > 79 characters)
src/plone/app/blob/tests/test_replacements.py:139:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_replacements.py:149:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_replacements.py:157:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_replacements.py:185:80: E501 line too long (81 > 79 characters)
src/plone/app/blob/tests/test_replacements.py:205:80: E501 line too long (83 > 79 characters)
src/plone/app/blob/tests/test_replacements.py:208:80: E501 line too long (82 > 79 characters)
src/plone/app/blob/tests/test_replacements.py:214:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_replacements.py:228:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_replacements.py:231:80: E501 line too long (81 > 79 characters)
src/plone/app/blob/tests/test_replacements.py:243:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_replacements.py:258:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_replacements.py:276:16: E713 test for membership should be 'not in'
src/plone/app/blob/tests/test_replacements.py:280:21: S001 found module formatter
src/plone/app/blob/tests/test_replacements.py:280:80: E501 line too long (81 > 79 characters)
src/plone/app/blob/tests/test_replacements.py:284:16: E713 test for membership should be 'not in'
src/plone/app/blob/tests/test_replacements.py:285:57: S001 found module formatter
src/plone/app/blob/tests/test_replacements.py:306:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_replacements.py:311:9: E731 do not assign a lambda expression, use a def
src/plone/app/blob/tests/base.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/tests/base.py:1:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/base.py:2:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/base.py:7:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/base.py:8:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/tests/base.py:9:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/base.py:18:16: S001 found module formatter
src/plone/app/blob/tests/base.py:24:20: S001 found module formatter
src/plone/app/blob/tests/base.py:28:1: E305 expected 2 blank lines after class or function definition, found 1
src/plone/app/blob/tests/base.py:36:1: E305 expected 2 blank lines after class or function definition, found 1
src/plone/app/blob/tests/base.py:59:65: Q000 Remove bad quotes.
src/plone/app/blob/tests/base.py:59:80: E501 line too long (85 > 79 characters)
src/plone/app/blob/tests/base.py:60:39: W292 no newline at end of file
src/plone/app/blob/tests/test_webdav.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/tests/test_webdav.py:3:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_webdav.py:14:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_webdav.py:15:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_webdav.py:31:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_webdav.py:32:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_base_fields.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/tests/test_base_fields.py:2:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/tests/test_base_fields.py:3:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_base_fields.py:4:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_base_fields.py:6:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_base_fields.py:7:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_base_fields.py:8:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_base_fields.py:9:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_base_fields.py:35:1: E305 expected 2 blank lines after class or function definition, found 1
src/plone/app/blob/tests/__init__.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/tests/patches.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/tests/utils.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/tests/utils.py:2:1: I003 isort expected 1 blank line in imports, found 0
src/plone/app/blob/tests/utils.py:2:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/utils.py:3:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/utils.py:4:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/utils.py:5:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/utils.py:56:9: T001 print statement found.
src/plone/app/blob/tests/utils.py:57:9: T001 print statement found.
src/plone/app/blob/tests/utils.py:58:9: T001 print statement found.
src/plone/app/blob/tests/test_utils.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/tests/test_utils.py:1:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_utils.py:2:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/tests/test_utils.py:5:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_adapters.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/tests/test_adapters.py:1:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_adapters.py:2:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_adapters.py:3:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_adapters.py:4:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_adapters.py:5:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_adapters.py:8:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_adapters.py:11:1: I003 isort expected 1 blank line in imports, found 0
src/plone/app/blob/tests/test_adapters.py:22:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_adapters.py:32:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/test_adapters.py:69:18: D001 found assertEquals( replace it with assertEqual
src/plone/app/blob/tests/test_adapters.py:70:18: D001 found assertEquals( replace it with assertEqual
src/plone/app/blob/tests/lingua.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/tests/lingua.py:3:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/tests/lingua.py:6:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/lingua.py:7:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/lingua.py:9:1: I003 isort expected 1 blank line in imports, found 0
src/plone/app/blob/tests/lingua.py:17:29: E127 continuation line over-indented for visual indent
src/plone/app/blob/tests/lingua.py:32:1: E305 expected 2 blank lines after class or function definition, found 1
src/plone/app/blob/tests/test_doctests.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/tests/test_doctests.py:1:1: I003 isort expected 1 blank line in imports, found 0
src/plone/app/blob/tests/test_doctests.py:2:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_doctests.py:3:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/tests/test_doctests.py:4:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_doctests.py:4:80: E501 line too long (87 > 79 characters)
src/plone/app/blob/tests/test_doctests.py:5:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_doctests.py:6:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/tests/test_doctests.py:7:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_doctests.py:17:12: E131 continuation line unaligned for hanging indent
src/plone/app/blob/tests/test_doctests.py:24:16: E131 continuation line unaligned for hanging indent
src/plone/app/blob/tests/test_doctests.py:31:16: E131 continuation line unaligned for hanging indent
src/plone/app/blob/tests/test_linguaplone.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/tests/test_linguaplone.py:1:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_linguaplone.py:3:1: I004 isort found an unexpected blank line in imports
src/plone/app/blob/tests/test_linguaplone.py:4:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_linguaplone.py:6:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_linguaplone.py:7:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/test_linguaplone.py:16:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/tests/layer.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/tests/layer.py:1:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/layer.py:2:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/layer.py:6:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/layer.py:7:1: I001 isort found an import in the wrong position
src/plone/app/blob/tests/layer.py:17:43: Q000 Remove bad quotes.
src/plone/app/blob/tests/layer.py:29:1: E305 expected 2 blank lines after class or function definition, found 1
src/plone/app/blob/tests/layer.py:30:68: Q000 Remove bad quotes.
src/plone/app/blob/tests/layer.py:30:80: E501 line too long (85 > 79 characters)
src/plone/app/blob/tests/layer.py:45:39: S001 found module formatter
src/plone/app/blob/tests/layer.py:57:80: E501 line too long (84 > 79 characters)
src/plone/app/blob/tests/layer.py:66:1: E305 expected 2 blank lines after class or function definition, found 1
src/plone/app/blob/tests/layer.py:68:46: Q000 Remove bad quotes.
src/plone/app/blob/tests/layer.py:99:1: E305 expected 2 blank lines after class or function definition, found 1
src/plone/app/blob/tests/layer.py:101:41: Q000 Remove bad quotes.
src/plone/app/blob/subtypes/image.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/subtypes/image.py:1:1: I001 isort found an import in the wrong position
src/plone/app/blob/subtypes/image.py:3:1: I001 isort found an import in the wrong position
src/plone/app/blob/subtypes/image.py:8:1: I001 isort found an import in the wrong position
src/plone/app/blob/subtypes/image.py:9:1: I001 isort found an import in the wrong position
src/plone/app/blob/subtypes/image.py:10:1: I001 isort found an import in the wrong position
src/plone/app/blob/subtypes/image.py:11:1: I001 isort found an import in the wrong position
src/plone/app/blob/subtypes/image.py:12:1: I001 isort found an import in the wrong position
src/plone/app/blob/subtypes/image.py:13:1: I001 isort found an import in the wrong position
src/plone/app/blob/subtypes/image.py:18:5: D001 found implements( replace it with zope.interface.implementer
src/plone/app/blob/subtypes/image.py:23:12: P002 found "hasattr", consider replacing it
src/plone/app/blob/subtypes/image.py:28:5: D001 found implements( replace it with zope.interface.implementer
src/plone/app/blob/subtypes/image.py:32:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/image.py:33:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/image.py:34:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/image.py:35:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/image.py:36:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/image.py:37:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/image.py:38:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/image.py:39:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/image.py:40:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/image.py:41:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/image.py:42:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/image.py:43:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/image.py:44:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/image.py:45:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/image.py:46:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/image.py:47:27: E127 continuation line over-indented for visual indent
src/plone/app/blob/subtypes/image.py:49:34: E127 continuation line over-indented for visual indent
src/plone/app/blob/subtypes/image.py:50:34: E127 continuation line over-indented for visual indent
src/plone/app/blob/subtypes/blob.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/subtypes/blob.py:1:1: I001 isort found an import in the wrong position
src/plone/app/blob/subtypes/blob.py:2:1: I001 isort found an import in the wrong position
src/plone/app/blob/subtypes/blob.py:6:1: I001 isort found an import in the wrong position
src/plone/app/blob/subtypes/blob.py:7:1: I001 isort found an import in the wrong position
src/plone/app/blob/subtypes/blob.py:8:1: I001 isort found an import in the wrong position
src/plone/app/blob/subtypes/blob.py:16:5: D001 found implements( replace it with zope.interface.implementer
src/plone/app/blob/subtypes/blob.py:20:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/blob.py:21:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/blob.py:22:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/blob.py:23:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/blob.py:24:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/blob.py:25:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/blob.py:26:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/blob.py:27:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/blob.py:28:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/blob.py:29:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/blob.py:30:27: E127 continuation line over-indented for visual indent
src/plone/app/blob/subtypes/blob.py:32:33: E127 continuation line over-indented for visual indent
src/plone/app/blob/subtypes/blob.py:33:33: E127 continuation line over-indented for visual indent
src/plone/app/blob/subtypes/file.py:0:1: C101 Coding magic comment not found
src/plone/app/blob/subtypes/file.py:1:1: I001 isort found an import in the wrong position
src/plone/app/blob/subtypes/file.py:2:1: I001 isort found an import in the wrong position
src/plone/app/blob/subtypes/file.py:6:1: I001 isort found an import in the wrong position
src/plone/app/blob/subtypes/file.py:7:1: I001 isort found an import in the wrong position
src/plone/app/blob/subtypes/file.py:8:1: I001 isort found an import in the wrong position
src/plone/app/blob/subtypes/file.py:20:5: D001 found implements( replace it with zope.interface.implementer
src/plone/app/blob/subtypes/file.py:24:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/file.py:25:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/file.py:26:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/file.py:27:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/file.py:28:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/file.py:29:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/file.py:30:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/file.py:31:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/file.py:32:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/file.py:33:13: E128 continuation line under-indented for visual indent
src/plone/app/blob/subtypes/file.py:34:27: E127 continuation line over-indented for visual indent
src/plone/app/blob/subtypes/file.py:36:33: E127 continuation line over-indented for visual indent
src/plone/app/blob/subtypes/file.py:37:33: E127 continuation line over-indented for visual indent
src/plone/app/blob/subtypes/__init__.py:0:1: C101 Coding magic comment not found

Follow these instructions to reproduce it locally.

Please sign in to comment.