Skip to content

Commit 530e5cd

Browse files
committed
Rework tests to test for bare collections on 3.7/3.8
1 parent 989d2d7 commit 530e5cd

File tree

1 file changed

+36
-24
lines changed

1 file changed

+36
-24
lines changed

tests/metadata/__init__.py

Lines changed: 36 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
Any,
1212
Callable,
1313
Dict,
14+
FrozenSet,
1415
List,
1516
MutableSequence,
1617
Sequence,
@@ -98,6 +99,7 @@ def simple_typed_attrs(
9899
| int_typed_attrs(defaults)
99100
| str_typed_attrs(defaults)
100101
| float_typed_attrs(defaults)
102+
| frozenset_typed_attrs(defaults, legacy_types_only=True)
101103
)
102104
if not for_frozen:
103105
res = (
@@ -108,6 +110,9 @@ def simple_typed_attrs(
108110
| list_typed_attrs(
109111
defaults, allow_mutable_defaults, legacy_types_only=True
110112
)
113+
| set_typed_attrs(
114+
defaults, allow_mutable_defaults, legacy_types_only=True
115+
)
111116
)
112117
else:
113118
res = (
@@ -282,6 +287,7 @@ def dict_typed_attrs(
282287
"""
283288
Generate a tuple of an attribute and a strategy that yields dictionaries
284289
for that attribute. The dictionaries map strings to integers.
290+
The generated dict types are what's expected to be used on pre-3.9 Pythons.
285291
"""
286292
default = attr.NOTHING
287293
val_strat = dictionaries(keys=text(), values=integers())
@@ -291,12 +297,8 @@ def dict_typed_attrs(
291297
default = Factory(lambda: default_val)
292298
else:
293299
default = default_val
294-
return (
295-
attr.ib(
296-
type=Dict[str, int] if draw(booleans()) else Dict, default=default
297-
),
298-
val_strat,
299-
)
300+
type = draw(sampled_from([Dict[str, int], Dict, dict]))
301+
return (attr.ib(type=type, default=default), val_strat)
300302

301303

302304
@composite
@@ -318,15 +320,16 @@ def new_dict_typed_attrs(draw, defaults=None, allow_mutable_defaults=True):
318320
else:
319321
default = default_val
320322

321-
type = (
322-
dict[str, int] if draw(booleans()) else dict
323-
) # We also produce bare dicts.
324-
325-
return (attr.ib(type=type, default=default), val_strat)
323+
return (attr.ib(type=dict[str, int], default=default), val_strat)
326324

327325

328326
@composite
329-
def set_typed_attrs(draw, defaults=None, allow_mutable_defaults=True):
327+
def set_typed_attrs(
328+
draw: DrawFn,
329+
defaults=None,
330+
allow_mutable_defaults=True,
331+
legacy_types_only=False,
332+
):
330333
"""
331334
Generate a tuple of an attribute and a strategy that yields sets
332335
for that attribute. The sets contain integers.
@@ -341,19 +344,21 @@ def set_typed_attrs(draw, defaults=None, allow_mutable_defaults=True):
341344
default = default_val
342345
else:
343346
default = default_val
344-
return (
345-
attr.ib(
346-
type=set[int]
347-
if draw(booleans())
348-
else (AbcSet[int] if draw(booleans()) else AbcMutableSet[int]),
349-
default=default,
350-
),
351-
val_strat,
347+
348+
type = draw(
349+
sampled_from(
350+
[set, set[int], AbcSet[int], AbcMutableSet[int]]
351+
if not legacy_types_only
352+
else [set, AbcSet[int], AbcMutableSet[int]]
353+
)
352354
)
355+
return (attr.ib(type=type, default=default), val_strat)
353356

354357

355358
@composite
356-
def frozenset_typed_attrs(draw, defaults=None):
359+
def frozenset_typed_attrs(
360+
draw: DrawFn, defaults=None, legacy_types_only=False
361+
):
357362
"""
358363
Generate a tuple of an attribute and a strategy that yields frozensets
359364
for that attribute. The frozensets contain integers.
@@ -362,7 +367,14 @@ def frozenset_typed_attrs(draw, defaults=None):
362367
val_strat = frozensets(integers())
363368
if defaults is True or (defaults is None and draw(booleans())):
364369
default = draw(val_strat)
365-
return (attr.ib(type=frozenset[int], default=default), val_strat)
370+
type = draw(
371+
sampled_from(
372+
[frozenset[int], frozenset, FrozenSet[int], FrozenSet]
373+
if not legacy_types_only
374+
else [frozenset, FrozenSet[int], FrozenSet]
375+
)
376+
)
377+
return (attr.ib(type=type, default=default), val_strat)
366378

367379

368380
@composite
@@ -390,9 +402,9 @@ def list_typed_attrs(
390402
attr.ib(
391403
type=draw(
392404
sampled_from(
393-
[List, List[float]]
405+
[List, List[float], list]
394406
if legacy_types_only
395-
else [list[float], List[float], List]
407+
else [list[float], list, List[float], List]
396408
)
397409
),
398410
default=default,

0 commit comments

Comments
 (0)