Skip to content

Commit 4777d4d

Browse files
Boost line length to 120
1 parent 0eeca89 commit 4777d4d

File tree

13 files changed

+46
-122
lines changed

13 files changed

+46
-122
lines changed

MANIFEST.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
include ChangeLog CODE_OF_CONDUCT.md CONTRIBUTING.rst CREDITS LICENSE README.rst
2-
include Makefile tox.ini
2+
include Makefile pyproject.toml tox.ini
33

44
graft factory
55

docs/conf.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,7 @@
6464

6565
if "READTHEDOCS_VERSION" in os.environ:
6666
# Use the readthedocs version string in preference to our known version.
67-
html_title = "{} {} documentation".format(
68-
project, os.environ["READTHEDOCS_VERSION"]
69-
)
67+
html_title = "{} {} documentation".format(project, os.environ["READTHEDOCS_VERSION"])
7068

7169
# Add any paths that contain custom static files (such as style sheets) here,
7270
# relative to this directory. They are copied after the builtin static files,

examples/django_demo/generic_foreignkey/factories.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@ class Meta:
2222

2323
class TaggedItemFactory(factory.django.DjangoModelFactory):
2424
object_id = factory.SelfAttribute("content_object.id")
25-
content_type = factory.LazyAttribute(
26-
lambda o: ContentType.objects.get_for_model(o.content_object)
27-
)
25+
content_type = factory.LazyAttribute(lambda o: ContentType.objects.get_for_model(o.content_object))
2826

2927
class Meta:
3028
exclude = ["content_object"]

factory/alchemy.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,7 @@ def _get_or_create(cls, model_class, session, args, kwargs):
5757
if field not in kwargs:
5858
raise errors.FactoryError(
5959
"sqlalchemy_get_or_create - "
60-
"Unable to find initialization value for '%s' in factory %s"
61-
% (field, cls.__name__)
60+
"Unable to find initialization value for '%s' in factory %s" % (field, cls.__name__)
6261
)
6362
key_fields[field] = kwargs.pop(field)
6463

@@ -76,11 +75,7 @@ def _get_or_create(cls, model_class, session, args, kwargs):
7675
}
7776
if get_or_create_params:
7877
try:
79-
obj = (
80-
session.query(model_class)
81-
.filter_by(**get_or_create_params)
82-
.one()
83-
)
78+
obj = session.query(model_class).filter_by(**get_or_create_params).one()
8479
except NoResultFound:
8580
# Original params are not a valid lookup and triggered a create(),
8681
# that resulted in an IntegrityError.

factory/base.py

Lines changed: 10 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,7 @@ def __call__(cls, **kwargs):
4141
elif cls._meta.strategy == enums.STUB_STRATEGY:
4242
return cls.stub(**kwargs)
4343
else:
44-
raise errors.UnknownStrategy(
45-
"Unknown Meta.strategy: {}".format(cls._meta.strategy)
46-
)
44+
raise errors.UnknownStrategy("Unknown Meta.strategy: {}".format(cls._meta.strategy))
4745

4846
def __new__(mcs, class_name, bases, attrs):
4947
"""Record attributes as a pattern for later instance construction.
@@ -193,23 +191,18 @@ def _fill_from_meta(self, meta, base_meta):
193191
}
194192

195193
for option in self._build_default_options():
196-
assert not hasattr(self, option.name), (
197-
"Can't override field %s." % option.name
198-
)
194+
assert not hasattr(self, option.name), "Can't override field %s." % option.name
199195
value = option.apply(meta, base_meta)
200196
meta_attrs.pop(option.name, None)
201197
setattr(self, option.name, value)
202198

203199
if meta_attrs:
204200
# Some attributes in the Meta aren't allowed here
205201
raise TypeError(
206-
"'class Meta' for %r got unknown attribute(s) %s"
207-
% (self.factory, ",".join(sorted(meta_attrs.keys())))
202+
"'class Meta' for %r got unknown attribute(s) %s" % (self.factory, ",".join(sorted(meta_attrs.keys())))
208203
)
209204

210-
def contribute_to_class(
211-
self, factory, meta=None, base_meta=None, base_factory=None, params=None
212-
):
205+
def contribute_to_class(self, factory, meta=None, base_meta=None, base_factory=None, params=None):
213206

214207
self.factory = factory
215208
self.base_factory = base_factory
@@ -235,17 +228,13 @@ def contribute_to_class(
235228
self.base_declarations[k] = v
236229

237230
if params is not None:
238-
for k, v in utils.sort_ordered_objects(
239-
vars(params).items(), getter=lambda item: item[1]
240-
):
231+
for k, v in utils.sort_ordered_objects(vars(params).items(), getter=lambda item: item[1]):
241232
if not k.startswith("_"):
242233
self.parameters[k] = declarations.SimpleParameter.wrap(v)
243234

244235
self._check_parameter_dependencies(self.parameters)
245236

246-
self.pre_declarations, self.post_declarations = builder.parse_declarations(
247-
self.declarations
248-
)
237+
self.pre_declarations, self.post_declarations = builder.parse_declarations(self.declarations)
249238

250239
def _get_counter_reference(self):
251240
"""Identify which factory should be used for a shared counter."""
@@ -311,7 +300,7 @@ def prepare_arguments(self, attributes):
311300
for k, v in kwargs.items()
312301
if k not in self.exclude
313302
and k not in self.parameters
314-
and v is not declarations.SKIP
303+
and v is not declarations.SKIP # fmt: skip
315304
}
316305

317306
# 3. Rename fields
@@ -373,21 +362,16 @@ def _check_parameter_dependencies(self, parameters):
373362
field_revdeps = parameter.get_revdeps(parameters)
374363
if not field_revdeps:
375364
continue
376-
deep_revdeps[name] = set.union(
377-
*(deep_revdeps[dep] for dep in field_revdeps)
378-
)
365+
deep_revdeps[name] = set.union(*(deep_revdeps[dep] for dep in field_revdeps))
379366
deep_revdeps[name] |= set(field_revdeps)
380367
for dep in field_revdeps:
381368
deps[dep].add(name)
382369

383370
# Check for cyclical dependencies
384-
cyclic = [
385-
name for name, field_deps in deep_revdeps.items() if name in field_deps
386-
]
371+
cyclic = [name for name, field_deps in deep_revdeps.items() if name in field_deps]
387372
if cyclic:
388373
raise errors.CyclicDefinitionError(
389-
"Cyclic definition detected on %r; Params around %s"
390-
% (self.factory, ", ".join(cyclic))
374+
"Cyclic definition detected on %r; Params around %s" % (self.factory, ", ".join(cyclic))
391375
)
392376
return deps
393377

factory/builder.py

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ def update(self, values):
7878
{
7979
self.join(root, sub): v
8080
for root in extra_context_keys
81-
for sub, v in self.contexts[root].items()
81+
for sub, v in self.contexts[root].items() # fmt: skip
8282
},
8383
sorted(self.declarations),
8484
)
@@ -148,18 +148,15 @@ def parse_declarations(decls, base_pre=None, base_post=None):
148148
# Conflict: PostGenerationDeclaration with the same
149149
# name as a BaseDeclaration
150150
raise errors.InvalidDeclarationError(
151-
"PostGenerationDeclaration %s=%r shadows declaration %r"
152-
% (k, v, pre_declarations[k])
151+
"PostGenerationDeclaration %s=%r shadows declaration %r" % (k, v, pre_declarations[k])
153152
)
154153
extra_post[k] = v
155154
elif k in post_declarations:
156155
# Passing in a scalar value to a PostGenerationDeclaration
157156
# Set it as `key__`
158157
magic_key = post_declarations.join(k, "")
159158
extra_post[magic_key] = v
160-
elif k in pre_declarations and isinstance(
161-
pre_declarations[k].declaration, declarations.Transformer
162-
):
159+
elif k in pre_declarations and isinstance(pre_declarations[k].declaration, declarations.Transformer):
163160
extra_maybenonpost[k] = pre_declarations[k].declaration.function(v)
164161
else:
165162
extra_maybenonpost[k] = v
@@ -214,8 +211,7 @@ def recurse(self, factory, declarations, force_sequence=None):
214211

215212
if not issubclass(factory, base.BaseFactory):
216213
raise errors.AssociatedClassError(
217-
"%r: Attempting to recursing into a non-factory object %r"
218-
% (self, factory)
214+
"%r: Attempting to recursing into a non-factory object %r" % (self, factory)
219215
)
220216
builder = self.builder.recurse(factory._meta, declarations)
221217
return builder.build(parent_step=self, force_sequence=force_sequence)
@@ -337,8 +333,7 @@ def __getattr__(self, name):
337333
"""
338334
if name in self.__pending:
339335
raise errors.CyclicDefinitionError(
340-
"Cyclic lazy attribute definition for %r; cycle found in %r."
341-
% (name, self.__pending)
336+
"Cyclic lazy attribute definition for %r; cycle found in %r." % (name, self.__pending)
342337
)
343338
elif name in self.__values:
344339
return self.__values[name]

factory/declarations.py

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -210,9 +210,7 @@ def __init__(self, iterator, cycle=True, getter=None):
210210
self.iterator = None
211211

212212
if cycle:
213-
self.iterator_builder = lambda: utils.ResetableIterator(
214-
itertools.cycle(iterator)
215-
)
213+
self.iterator_builder = lambda: utils.ResetableIterator(itertools.cycle(iterator))
216214
else:
217215
self.iterator_builder = lambda: utils.ResetableIterator(iterator)
218216

@@ -305,10 +303,7 @@ def evaluate(self, instance, step, extra):
305303
# Strip the current instance from the chain
306304
chain = step.chain[1:]
307305
if self.strict and not chain:
308-
raise TypeError(
309-
"A ContainerAttribute in 'strict' mode can only be used "
310-
"within a SubFactory."
311-
)
306+
raise TypeError("A ContainerAttribute in 'strict' mode can only be used " "within a SubFactory.")
312307

313308
return self.function(instance, chain)
314309

@@ -484,26 +479,18 @@ def __init__(self, decider, yes_declaration=SKIP, no_declaration=SKIP):
484479
if len(used_phases) > 1:
485480
raise TypeError(f"Inconsistent phases for {self!r}: {phases!r}")
486481

487-
self.FACTORY_BUILDER_PHASE = (
488-
used_phases.pop()
489-
if used_phases
490-
else enums.BuilderPhase.ATTRIBUTE_RESOLUTION
491-
)
482+
self.FACTORY_BUILDER_PHASE = used_phases.pop() if used_phases else enums.BuilderPhase.ATTRIBUTE_RESOLUTION
492483

493484
def evaluate_post(self, instance, step, overrides):
494485
"""Handle post-generation declarations"""
495486
decider_phase = enums.get_builder_phase(self.decider)
496487
if decider_phase == enums.BuilderPhase.ATTRIBUTE_RESOLUTION:
497488
# Note: we work on the *builder stub*, not on the actual instance.
498489
# This gives us access to all Params-level definitions.
499-
choice = self.decider.evaluate_pre(
500-
instance=step.stub, step=step, overrides=overrides
501-
)
490+
choice = self.decider.evaluate_pre(instance=step.stub, step=step, overrides=overrides)
502491
else:
503492
assert decider_phase == enums.BuilderPhase.POST_INSTANTIATION
504-
choice = self.decider.evaluate_post(
505-
instance=instance, step=step, overrides={}
506-
)
493+
choice = self.decider.evaluate_post(instance=instance, step=step, overrides={})
507494

508495
target = self.yes if choice else self.no
509496
if enums.get_builder_phase(target) == enums.BuilderPhase.POST_INSTANTIATION:

factory/django.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,7 @@ def _load_model_class(cls, definition):
101101
@classmethod
102102
def _get_manager(cls, model_class):
103103
if model_class is None:
104-
raise errors.AssociatedClassError(
105-
f"No model set on {cls.__module__}.{cls.__name__}.Meta"
106-
)
104+
raise errors.AssociatedClassError(f"No model set on {cls.__module__}.{cls.__name__}.Meta")
107105

108106
try:
109107
manager = model_class.objects
@@ -129,18 +127,15 @@ def _get_or_create(cls, model_class, *args, **kwargs):
129127
manager = cls._get_manager(model_class)
130128

131129
assert "defaults" not in cls._meta.django_get_or_create, (
132-
"'defaults' is a reserved keyword for get_or_create "
133-
"(in %s._meta.django_get_or_create=%r)"
134-
% (cls, cls._meta.django_get_or_create)
135-
)
130+
"'defaults' is a reserved keyword for get_or_create (in %s._meta.django_get_or_create=%r)"
131+
) % (cls, cls._meta.django_get_or_create)
136132

137133
key_fields = {}
138134
for field in cls._meta.django_get_or_create:
139135
if field not in kwargs:
140136
raise errors.FactoryError(
141137
"django_get_or_create - "
142-
"Unable to find initialization value for '%s' in factory %s"
143-
% (field, cls.__name__)
138+
"Unable to find initialization value for '%s' in factory %s" % (field, cls.__name__)
144139
)
145140
key_fields[field] = kwargs.pop(field)
146141
key_fields["defaults"] = kwargs

factory/fuzzy.py

Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -168,18 +168,13 @@ def __init__(self, start_date, end_date=None):
168168
end_date = datetime.date.today()
169169

170170
if start_date > end_date:
171-
raise ValueError(
172-
"FuzzyDate boundaries should have start <= end; got %r > %r."
173-
% (start_date, end_date)
174-
)
171+
raise ValueError("FuzzyDate boundaries should have start <= end; got %r > %r." % (start_date, end_date))
175172

176173
self.start_date = start_date.toordinal()
177174
self.end_date = end_date.toordinal()
178175

179176
def fuzz(self):
180-
return datetime.date.fromordinal(
181-
random.randgen.randint(self.start_date, self.end_date)
182-
)
177+
return datetime.date.fromordinal(random.randgen.randint(self.start_date, self.end_date))
183178

184179

185180
class BaseFuzzyDateTime(BaseFuzzyAttribute):
@@ -191,8 +186,7 @@ class BaseFuzzyDateTime(BaseFuzzyAttribute):
191186
def _check_bounds(self, start_dt, end_dt):
192187
if start_dt > end_dt:
193188
raise ValueError(
194-
"""%s boundaries should have start <= end, got %r > %r"""
195-
% (self.__class__.__name__, start_dt, end_dt)
189+
"""%s boundaries should have start <= end, got %r > %r""" % (self.__class__.__name__, start_dt, end_dt)
196190
)
197191

198192
def _now(self):
@@ -232,9 +226,7 @@ def __init__(
232226

233227
def fuzz(self):
234228
delta = self.end_dt - self.start_dt
235-
microseconds = delta.microseconds + 1000000 * (
236-
delta.seconds + (delta.days * 86400)
237-
)
229+
microseconds = delta.microseconds + 1000000 * (delta.seconds + (delta.days * 86400))
238230

239231
offset = random.randgen.randint(0, microseconds)
240232
result = self.start_dt + datetime.timedelta(microseconds=offset)
@@ -268,14 +260,9 @@ def _now(self):
268260

269261
def _check_bounds(self, start_dt, end_dt):
270262
if start_dt.tzinfo is not None:
271-
raise ValueError(
272-
"FuzzyNaiveDateTime only handles naive datetimes, got start=%r"
273-
% start_dt
274-
)
263+
raise ValueError("FuzzyNaiveDateTime only handles naive datetimes, got start=%r" % start_dt)
275264
if end_dt.tzinfo is not None:
276-
raise ValueError(
277-
"FuzzyNaiveDateTime only handles naive datetimes, got end=%r" % end_dt
278-
)
265+
raise ValueError("FuzzyNaiveDateTime only handles naive datetimes, got end=%r" % end_dt)
279266
super()._check_bounds(start_dt, end_dt)
280267

281268

@@ -291,12 +278,7 @@ def _now(self):
291278

292279
def _check_bounds(self, start_dt, end_dt):
293280
if start_dt.tzinfo is None:
294-
raise ValueError(
295-
"FuzzyDateTime requires timezone-aware datetimes, got start=%r"
296-
% start_dt
297-
)
281+
raise ValueError("FuzzyDateTime requires timezone-aware datetimes, got start=%r" % start_dt)
298282
if end_dt.tzinfo is None:
299-
raise ValueError(
300-
"FuzzyDateTime requires timezone-aware datetimes, got end=%r" % end_dt
301-
)
283+
raise ValueError("FuzzyDateTime requires timezone-aware datetimes, got end=%r" % end_dt)
302284
super()._check_bounds(start_dt, end_dt)

factory/utils.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@ def __repr__(self):
3434

3535
def __str__(self):
3636
return ", ".join(
37-
[repr(arg) for arg in self.args]
38-
+ ["%s=%s" % (key, repr(value)) for key, value in self.kwargs.items()]
37+
[repr(arg) for arg in self.args] + ["%s=%s" % (key, repr(value)) for key, value in self.kwargs.items()]
3938
)
4039

4140

0 commit comments

Comments
 (0)