From 54543f1e8d3813652a22b745b87848ca6dad7c2f Mon Sep 17 00:00:00 2001 From: Lucas Wiman Date: Mon, 2 Jul 2018 11:43:38 -0700 Subject: [PATCH 01/12] Add a flake8 environment to ensure pep8 compatibility. --- tox.ini | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/tox.ini b/tox.ini index 861074c..aaa2ca7 100644 --- a/tox.ini +++ b/tox.ini @@ -4,6 +4,7 @@ envlist = py34-django{18,19,110,111,200} py35-django{18,19,110,111,200,trunk} py36-django{111,200,trunk} + flake8 [testenv] deps = @@ -19,10 +20,18 @@ deps = ignore_outcome = djangotrunk: True passenv = - CI - TRAVIS - TRAVIS_* + CI + TRAVIS + TRAVIS_* commands = pip install -e . py.test {posargs} + +[testenv:flake8] +basepython = + python3.6 +deps = + flake8 +commands = + flake8 model_utils tests From 9a6634b87a3e13b6b7cddf4a0f38bbca5acd1259 Mon Sep 17 00:00:00 2001 From: Lucas Wiman Date: Mon, 2 Jul 2018 11:45:51 -0700 Subject: [PATCH 02/12] Ignore assigning to lambda warning. --- tox.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tox.ini b/tox.ini index aaa2ca7..6c6da4e 100644 --- a/tox.ini +++ b/tox.ini @@ -35,3 +35,7 @@ deps = flake8 commands = flake8 model_utils tests + +[flake8] +ignore = + E731 From 654e13235e3f1dd5bcafc2b76729c9b79486b439 Mon Sep 17 00:00:00 2001 From: Lucas Wiman Date: Mon, 2 Jul 2018 11:47:19 -0700 Subject: [PATCH 03/12] Fix E303 too many blank lines. --- model_utils/choices.py | 12 ------------ tests/test_fields/test_field_tracker.py | 1 - 2 files changed, 13 deletions(-) diff --git a/model_utils/choices.py b/model_utils/choices.py index d48ba90..c036cf4 100644 --- a/model_utils/choices.py +++ b/model_utils/choices.py @@ -57,7 +57,6 @@ class Choices(object): self._process(choices) - def _store(self, triple, triple_collector, double_collector): self._identifier_map[triple[1]] = triple[0] self._display_map[triple[0]] = triple[2] @@ -65,7 +64,6 @@ class Choices(object): triple_collector.append(triple) double_collector.append((triple[0], triple[2])) - def _process(self, choices, triple_collector=None, double_collector=None): if triple_collector is None: triple_collector = self._triples @@ -98,26 +96,21 @@ class Choices(object): else: store((choice, choice, choice)) - def __len__(self): return len(self._doubles) - def __iter__(self): return iter(self._doubles) - def __getattr__(self, attname): try: return self._identifier_map[attname] except KeyError: raise AttributeError(attname) - def __getitem__(self, key): return self._display_map[key] - def __add__(self, other): if isinstance(other, self.__class__): other = other._triples @@ -125,29 +118,24 @@ class Choices(object): other = list(other) return Choices(*(self._triples + other)) - def __radd__(self, other): # radd is never called for matching types, so we don't check here other = list(other) return Choices(*(other + self._triples)) - def __eq__(self, other): if isinstance(other, self.__class__): return self._triples == other._triples return False - def __repr__(self): return '%s(%s)' % ( self.__class__.__name__, ', '.join(("%s" % repr(i) for i in self._triples)) ) - def __contains__(self, item): return item in self._db_values - def __deepcopy__(self, memo): return self.__class__(*copy.deepcopy(self._triples, memo)) diff --git a/tests/test_fields/test_field_tracker.py b/tests/test_fields/test_field_tracker.py index 93b9efa..cff2e35 100644 --- a/tests/test_fields/test_field_tracker.py +++ b/tests/test_fields/test_field_tracker.py @@ -241,7 +241,6 @@ class FieldTrackerTests(FieldTrackerTestCase, FieldTrackerCommonTests): self.assertFalse(item.tracker.has_changed('number')) - class FieldTrackerMultipleInstancesTests(TestCase): def test_with_deferred_fields_access_multiple(self): From f845dcb24c924531503f9695f63ea61cf4c84d01 Mon Sep 17 00:00:00 2001 From: Lucas Wiman Date: Mon, 2 Jul 2018 11:49:16 -0700 Subject: [PATCH 04/12] Fix E231: missing whitespace after ",". --- tests/test_fields/test_field_tracker.py | 52 ++++++++++++------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/tests/test_fields/test_field_tracker.py b/tests/test_fields/test_field_tracker.py index cff2e35..b0f2dba 100644 --- a/tests/test_fields/test_field_tracker.py +++ b/tests/test_fields/test_field_tracker.py @@ -75,7 +75,7 @@ class FieldTrackerTests(FieldTrackerTestCase, FieldTrackerCommonTests): self.assertChanged(name=None, number=None) self.instance.name = '' self.assertChanged(name=None, number=None) - self.instance.mutable = [1,2,3] + self.instance.mutable = [1, 2, 3] self.assertChanged(name=None, number=None, mutable=None) def test_pre_save_has_changed(self): @@ -84,7 +84,7 @@ class FieldTrackerTests(FieldTrackerTestCase, FieldTrackerCommonTests): self.assertHasChanged(name=True, number=False, mutable=False) self.instance.number = 7 self.assertHasChanged(name=True, number=True) - self.instance.mutable = [1,2,3] + self.instance.mutable = [1, 2, 3] self.assertHasChanged(name=True, number=True, mutable=True) def test_first_save(self): @@ -94,22 +94,22 @@ class FieldTrackerTests(FieldTrackerTestCase, FieldTrackerCommonTests): self.assertChanged(name=None) self.instance.name = 'retro' self.instance.number = 4 - self.instance.mutable = [1,2,3] + self.instance.mutable = [1, 2, 3] self.assertHasChanged(name=True, number=True, mutable=True) self.assertPrevious(name=None, number=None, mutable=None) - self.assertCurrent(name='retro', number=4, id=None, mutable=[1,2,3]) + self.assertCurrent(name='retro', number=4, id=None, mutable=[1, 2, 3]) self.assertChanged(name=None, number=None, mutable=None) self.instance.save(update_fields=[]) self.assertHasChanged(name=True, number=True, mutable=True) self.assertPrevious(name=None, number=None, mutable=None) - self.assertCurrent(name='retro', number=4, id=None, mutable=[1,2,3]) + self.assertCurrent(name='retro', number=4, id=None, mutable=[1, 2, 3]) self.assertChanged(name=None, number=None, mutable=None) with self.assertRaises(ValueError): self.instance.save(update_fields=['number']) def test_post_save_has_changed(self): - self.update_instance(name='retro', number=4, mutable=[1,2,3]) + self.update_instance(name='retro', number=4, mutable=[1, 2, 3]) self.assertHasChanged(name=False, number=False, mutable=False) self.instance.name = 'new age' self.assertHasChanged(name=True, number=False) @@ -121,14 +121,14 @@ class FieldTrackerTests(FieldTrackerTestCase, FieldTrackerCommonTests): self.assertHasChanged(name=False, number=True, mutable=True) def test_post_save_previous(self): - self.update_instance(name='retro', number=4, mutable=[1,2,3]) + self.update_instance(name='retro', number=4, mutable=[1, 2, 3]) self.instance.name = 'new age' - self.assertPrevious(name='retro', number=4, mutable=[1,2,3]) + self.assertPrevious(name='retro', number=4, mutable=[1, 2, 3]) self.instance.mutable[1] = 4 - self.assertPrevious(name='retro', number=4, mutable=[1,2,3]) + self.assertPrevious(name='retro', number=4, mutable=[1, 2, 3]) def test_post_save_changed(self): - self.update_instance(name='retro', number=4, mutable=[1,2,3]) + self.update_instance(name='retro', number=4, mutable=[1, 2, 3]) self.assertChanged() self.instance.name = 'new age' self.assertChanged(name='retro') @@ -137,8 +137,8 @@ class FieldTrackerTests(FieldTrackerTestCase, FieldTrackerCommonTests): self.instance.name = 'retro' self.assertChanged(number=4) self.instance.mutable[1] = 4 - self.assertChanged(number=4, mutable=[1,2,3]) - self.instance.mutable = [1,2,3] + self.assertChanged(number=4, mutable=[1, 2, 3]) + self.instance.mutable = [1, 2, 3] self.assertChanged(number=4) def test_current(self): @@ -147,29 +147,29 @@ class FieldTrackerTests(FieldTrackerTestCase, FieldTrackerCommonTests): self.assertCurrent(id=None, name='new age', number=None, mutable=None) self.instance.number = 8 self.assertCurrent(id=None, name='new age', number=8, mutable=None) - self.instance.mutable = [1,2,3] - self.assertCurrent(id=None, name='new age', number=8, mutable=[1,2,3]) + self.instance.mutable = [1, 2, 3] + self.assertCurrent(id=None, name='new age', number=8, mutable=[1, 2, 3]) self.instance.mutable[1] = 4 - self.assertCurrent(id=None, name='new age', number=8, mutable=[1,4,3]) + self.assertCurrent(id=None, name='new age', number=8, mutable=[1, 4, 3]) self.instance.save() - self.assertCurrent(id=self.instance.id, name='new age', number=8, mutable=[1,4,3]) + self.assertCurrent(id=self.instance.id, name='new age', number=8, mutable=[1, 4, 3]) def test_update_fields(self): - self.update_instance(name='retro', number=4, mutable=[1,2,3]) + self.update_instance(name='retro', number=4, mutable=[1, 2, 3]) self.assertChanged() self.instance.name = 'new age' self.instance.number = 8 - self.instance.mutable = [4,5,6] - self.assertChanged(name='retro', number=4, mutable=[1,2,3]) + self.instance.mutable = [4, 5, 6] + self.assertChanged(name='retro', number=4, mutable=[1, 2, 3]) self.instance.save(update_fields=[]) - self.assertChanged(name='retro', number=4, mutable=[1,2,3]) + self.assertChanged(name='retro', number=4, mutable=[1, 2, 3]) self.instance.save(update_fields=['name']) in_db = self.tracked_class.objects.get(id=self.instance.id) self.assertEqual(in_db.name, self.instance.name) self.assertNotEqual(in_db.number, self.instance.number) - self.assertChanged(number=4, mutable=[1,2,3]) + self.assertChanged(number=4, mutable=[1, 2, 3]) self.instance.save(update_fields=['number']) - self.assertChanged(mutable=[1,2,3]) + self.assertChanged(mutable=[1, 2, 3]) self.instance.save(update_fields=['mutable']) self.assertChanged() in_db = self.tracked_class.objects.get(id=self.instance.id) @@ -649,7 +649,7 @@ class ModelTrackerTests(FieldTrackerTests): self.assertChanged() self.instance.name = '' self.assertChanged() - self.instance.mutable = [1,2,3] + self.instance.mutable = [1, 2, 3] self.assertChanged() def test_first_save(self): @@ -659,16 +659,16 @@ class ModelTrackerTests(FieldTrackerTests): self.assertChanged() self.instance.name = 'retro' self.instance.number = 4 - self.instance.mutable = [1,2,3] + self.instance.mutable = [1, 2, 3] self.assertHasChanged(name=True, number=True, mutable=True) self.assertPrevious(name=None, number=None, mutable=None) - self.assertCurrent(name='retro', number=4, id=None, mutable=[1,2,3]) + self.assertCurrent(name='retro', number=4, id=None, mutable=[1, 2, 3]) self.assertChanged() self.instance.save(update_fields=[]) self.assertHasChanged(name=True, number=True, mutable=True) self.assertPrevious(name=None, number=None, mutable=None) - self.assertCurrent(name='retro', number=4, id=None, mutable=[1,2,3]) + self.assertCurrent(name='retro', number=4, id=None, mutable=[1, 2, 3]) self.assertChanged() with self.assertRaises(ValueError): self.instance.save(update_fields=['number']) From 954624cb2221ece1fc199e55d21c3aaf159c8343 Mon Sep 17 00:00:00 2001 From: Lucas Wiman Date: Mon, 2 Jul 2018 11:50:56 -0700 Subject: [PATCH 05/12] Fix F841: local variable is assigned but never used. --- tests/test_models/test_deferred_fields.py | 2 +- tests/test_models/test_status_model.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_models/test_deferred_fields.py b/tests/test_models/test_deferred_fields.py index 05ba336..ea8e3bd 100644 --- a/tests/test_models/test_deferred_fields.py +++ b/tests/test_models/test_deferred_fields.py @@ -24,7 +24,7 @@ class CustomDescriptorTests(TestCase): self.assertEqual(instance.custom_field, '2') self.assertEqual(instance.__dict__['custom_field'], 2) instance.save() - intance = ModelWithCustomDescriptor.objects.get(pk=instance.pk) + instance = ModelWithCustomDescriptor.objects.get(pk=instance.pk) self.assertEqual(instance.custom_field, '2') self.assertEqual(instance.__dict__['custom_field'], 2) diff --git a/tests/test_models/test_status_model.py b/tests/test_models/test_status_model.py index f660936..6950dbf 100644 --- a/tests/test_models/test_status_model.py +++ b/tests/test_models/test_status_model.py @@ -18,7 +18,7 @@ class StatusModelTests(TestCase): c1 = self.model.objects.create() self.assertTrue(c1.status_changed, datetime(2016, 1, 1)) - c2 = self.model.objects.create() + self.model.objects.create() self.assertEqual(self.model.active.count(), 2) self.assertEqual(self.model.deleted.count(), 0) From 679aed41a298d6e97cf8abfb1ee3248d65b542fd Mon Sep 17 00:00:00 2001 From: Lucas Wiman Date: Mon, 2 Jul 2018 11:52:05 -0700 Subject: [PATCH 06/12] Remove unused __unicode__ method (dead code). --- tests/models.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/models.py b/tests/models.py index 7c9bb56..80f3a3f 100644 --- a/tests/models.py +++ b/tests/models.py @@ -38,9 +38,6 @@ class InheritanceManagerTestParent(models.Model): on_delete=models.CASCADE) objects = InheritanceManager() - def __unicode__(self): - return unicode(self.pk) - def __str__(self): return "%s(%s)" % ( self.__class__.__name__[len('InheritanceManagerTest'):], From 600ddc8dc546f046b461a8c7cae9af9f26dc7ac8 Mon Sep 17 00:00:00 2001 From: Lucas Wiman Date: Mon, 2 Jul 2018 12:16:41 -0700 Subject: [PATCH 07/12] Fix F401: imported but unused. --- model_utils/__init__.py | 4 ++-- tests/test_fields/test_field_tracker.py | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/model_utils/__init__.py b/model_utils/__init__.py index f297da6..54f1b02 100644 --- a/model_utils/__init__.py +++ b/model_utils/__init__.py @@ -1,4 +1,4 @@ -from .choices import Choices -from .tracker import FieldTracker, ModelTracker +from .choices import Choices # noqa:F401 +from .tracker import FieldTracker, ModelTracker # noqa:F401 __version__ = '3.1.2' diff --git a/tests/test_fields/test_field_tracker.py b/tests/test_fields/test_field_tracker.py index b0f2dba..43f12f5 100644 --- a/tests/test_fields/test_field_tracker.py +++ b/tests/test_fields/test_field_tracker.py @@ -1,7 +1,5 @@ from __future__ import unicode_literals -from unittest import skipUnless - import django from django.core.exceptions import FieldError from django.test import TestCase From da65d0be3245df66a4ba3f687d35d2cac92f50ee Mon Sep 17 00:00:00 2001 From: Lucas Wiman Date: Mon, 2 Jul 2018 12:20:38 -0700 Subject: [PATCH 08/12] Fix E30X too-few line spacing errors. --- model_utils/fields.py | 12 +++++++++--- model_utils/tracker.py | 2 ++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/model_utils/fields.py b/model_utils/fields.py index f308706..d9d9b85 100644 --- a/model_utils/fields.py +++ b/model_utils/fields.py @@ -141,6 +141,7 @@ SPLIT_DEFAULT_PARAGRAPHS = getattr(settings, 'SPLIT_DEFAULT_PARAGRAPHS', 2) _excerpt_field_name = lambda name: '_%s_excerpt' % name + def get_excerpt(content): excerpt = [] default_excerpt = [] @@ -156,6 +157,7 @@ def get_excerpt(content): return '\n'.join(default_excerpt) + @python_2_unicode_compatible class SplitText(object): def __init__(self, instance, field_name, excerpt_field_name): @@ -166,11 +168,13 @@ class SplitText(object): self.excerpt_field_name = excerpt_field_name # content is read/write - def _get_content(self): + @property + def content(self): return self.instance.__dict__[self.field_name] - def _set_content(self, val): + + @content.setter + def content(self, val): setattr(self.instance, self.field_name, val) - content = property(_get_content, _set_content) # excerpt is a read only property def _get_excerpt(self): @@ -185,6 +189,7 @@ class SplitText(object): def __str__(self): return self.content + class SplitDescriptor(object): def __init__(self, field): self.field = field @@ -205,6 +210,7 @@ class SplitDescriptor(object): else: obj.__dict__[self.field.name] = value + class SplitField(models.TextField): def __init__(self, *args, **kwargs): # for South FakeORM compatibility: the frozen version of a diff --git a/model_utils/tracker.py b/model_utils/tracker.py index 582ae06..8ce10dc 100644 --- a/model_utils/tracker.py +++ b/model_utils/tracker.py @@ -235,6 +235,7 @@ class FieldTracker(object): def patch_save(self, instance): original_save = instance.save + def save(**kwargs): ret = original_save(**kwargs) update_fields = kwargs.get('update_fields') @@ -251,6 +252,7 @@ class FieldTracker(object): fields=fields ) return ret + instance.save = save def __get__(self, instance, owner): From e23e86a2beb13a66884d1670fd11a8988a605cc9 Mon Sep 17 00:00:00 2001 From: Lucas Wiman Date: Mon, 2 Jul 2018 12:52:47 -0700 Subject: [PATCH 09/12] Ignore W503 line break before binary operator It doesn't seem like following this rule will lead to clearer code in the violations in this codebase. --- tox.ini | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index 6c6da4e..c46b78a 100644 --- a/tox.ini +++ b/tox.ini @@ -38,4 +38,5 @@ commands = [flake8] ignore = - E731 + E731, ; do not assign a lambda expression, use a def + W503 ; line break before binary operator From 0859508a6422bc57b54060ee504f3166e8536d9e Mon Sep 17 00:00:00 2001 From: Lucas Wiman Date: Mon, 2 Jul 2018 12:57:14 -0700 Subject: [PATCH 10/12] Fix E123 closing bracket does not match indentation of opening bracket's line --- model_utils/choices.py | 4 ++-- model_utils/managers.py | 4 ++-- tests/test_fields/test_status_field.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/model_utils/choices.py b/model_utils/choices.py index c036cf4..681e44b 100644 --- a/model_utils/choices.py +++ b/model_utils/choices.py @@ -92,7 +92,7 @@ class Choices(object): raise ValueError( "Choices can't take a list of length %s, only 2 or 3" % len(choice) - ) + ) else: store((choice, choice, choice)) @@ -132,7 +132,7 @@ class Choices(object): return '%s(%s)' % ( self.__class__.__name__, ', '.join(("%s" % repr(i) for i in self._triples)) - ) + ) def __contains__(self, item): return item in self._db_values diff --git a/model_utils/managers.py b/model_utils/managers.py index 98a2a54..b760ffd 100644 --- a/model_utils/managers.py +++ b/model_utils/managers.py @@ -76,7 +76,7 @@ class InheritanceQuerySetMixin(object): raise ValueError( '%r is not in the discovered subclasses, tried: %s' % ( subclass, ', '.join(calculated_subclasses)) - ) + ) subclasses = verified_subclasses # workaround https://code.djangoproject.com/ticket/16855 @@ -159,7 +159,7 @@ class InheritanceQuerySetMixin(object): if isinstance(rel.field, OneToOneField) and issubclass(rel.field.model, model) and model is not rel.field.model - ] + ] subclasses = [] if levels: diff --git a/tests/test_fields/test_status_field.py b/tests/test_fields/test_status_field.py index 5f077da..dc0f223 100644 --- a/tests/test_fields/test_status_field.py +++ b/tests/test_fields/test_status_field.py @@ -6,7 +6,7 @@ from model_utils.fields import StatusField from tests.models import ( Article, StatusFieldDefaultFilled, StatusFieldDefaultNotFilled, StatusFieldChoicesName, - ) +) class StatusFieldTests(TestCase): From 9189d6099682f8d81ce153b3e939421f70f6ec91 Mon Sep 17 00:00:00 2001 From: Lucas Wiman Date: Mon, 2 Jul 2018 13:01:49 -0700 Subject: [PATCH 11/12] Fix remaining non-E501 line length changes. The E402 module level import appears to be an error of some kind in flake8? --- tests/test_choices.py | 2 +- .../test_managers/test_inheritance_manager.py | 32 +++++++++---------- tox.ini | 1 + 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/tests/test_choices.py b/tests/test_choices.py index a503405..29dbb36 100644 --- a/tests/test_choices.py +++ b/tests/test_choices.py @@ -79,7 +79,7 @@ class LabelChoicesTests(ChoicesTests): ('DRAFT', 'is draft'), ('PUBLISHED', 'is published'), ('DELETED', 'DELETED')) - ) + ) def test_indexing(self): self.assertEqual(self.STATUS['PUBLISHED'], 'is published') diff --git a/tests/test_managers/test_inheritance_manager.py b/tests/test_managers/test_inheritance_manager.py index 39c694e..7cde8d3 100644 --- a/tests/test_managers/test_inheritance_manager.py +++ b/tests/test_managers/test_inheritance_manager.py @@ -6,11 +6,12 @@ import django from django.db import models from django.test import TestCase -from tests.models import (InheritanceManagerTestRelated, InheritanceManagerTestGrandChild1, - InheritanceManagerTestGrandChild1_2, InheritanceManagerTestParent, - InheritanceManagerTestChild1, - InheritanceManagerTestChild2, TimeFrame, InheritanceManagerTestChild3 - ) +from tests.models import ( + InheritanceManagerTestRelated, InheritanceManagerTestGrandChild1, + InheritanceManagerTestGrandChild1_2, InheritanceManagerTestParent, + InheritanceManagerTestChild1, + InheritanceManagerTestChild2, TimeFrame, InheritanceManagerTestChild3 +) class InheritanceManagerTests(TestCase): @@ -177,27 +178,26 @@ class InheritanceManagerTests(TestCase): # No argument to select_subclasses objs_1 = list( - self.get_manager(). - select_subclasses(). - values_list('id') + self.get_manager() + .select_subclasses() + .values_list('id') ) # String argument to select_subclasses objs_2 = list( - self.get_manager(). - select_subclasses( + self.get_manager() + .select_subclasses( "inheritancemanagertestchild2" - ). - values_list('id') + ) + .values_list('id') ) # String argument to select_subclasses objs_3 = list( - self.get_manager(). - select_subclasses( + self.get_manager() + .select_subclasses( InheritanceManagerTestChild2 - ). - values_list('id') + ).values_list('id') ) assert all(( diff --git a/tox.ini b/tox.ini index c46b78a..339c671 100644 --- a/tox.ini +++ b/tox.ini @@ -40,3 +40,4 @@ commands = ignore = E731, ; do not assign a lambda expression, use a def W503 ; line break before binary operator + E402 ; module level import not at top of file From c53b19e50d35ec5e14b552074af817cb7ad69b97 Mon Sep 17 00:00:00 2001 From: Lucas Wiman Date: Mon, 2 Jul 2018 14:33:47 -0700 Subject: [PATCH 12/12] Ignore 80 character line length restriction of pep8. It seems like this hasn't been consistently followed in this codebase, and the number of changes was fairly large. --- tox.ini | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index 339c671..71caa88 100644 --- a/tox.ini +++ b/tox.ini @@ -38,6 +38,7 @@ commands = [flake8] ignore = - E731, ; do not assign a lambda expression, use a def + E731 ; do not assign a lambda expression, use a def W503 ; line break before binary operator E402 ; module level import not at top of file + E501 ; line too long