17
17
18
18
from boto3 .dynamodb .types import Binary , DYNAMODB_CONTEXT
19
19
import hypothesis
20
- from hypothesis .strategies import binary , booleans , dictionaries , deferred , fractions , just , lists , none , sets , text
20
+ from hypothesis .strategies import (
21
+ binary , booleans , characters , dictionaries , deferred , fractions , just , lists , none , sets , text
22
+ )
21
23
22
24
SLOW_SETTINGS = hypothesis .settings (
23
25
suppress_health_check = (
49
51
)
50
52
51
53
52
- ddb_string = text (min_size = 1 , max_size = MAX_ITEM_BYTES )
54
+ ddb_string = text (
55
+ min_size = 1 ,
56
+ max_size = MAX_ITEM_BYTES ,
57
+ alphabet = characters (
58
+ blacklist_categories = ('Cs' ,),
59
+ blacklist_characters = ('"' , "'" ) # Quotes break moto :(
60
+ )
61
+ )
53
62
ddb_string_set = sets (ddb_string , min_size = 1 )
54
63
55
64
@@ -89,9 +98,17 @@ def _ddb_fraction_to_decimal(val):
89
98
| ddb_number_set
90
99
| ddb_binary_set
91
100
)
101
+ ddb_attribute_names = text (
102
+ min_size = 1 ,
103
+ max_size = 255 ,
104
+ alphabet = characters (
105
+ blacklist_categories = ('Cs' ,),
106
+ blacklist_characters = ('"' , "'" ) # Quotes break moto :(
107
+ )
108
+ )
92
109
# TODO: List and Map types have a max depth of 32
93
110
ddb_map_type = deferred (lambda : dictionaries (
94
- keys = text () ,
111
+ keys = ddb_attribute_names ,
95
112
values = (
96
113
ddb_scalar_types
97
114
| ddb_set_types
@@ -112,7 +129,7 @@ def _ddb_fraction_to_decimal(val):
112
129
ddb_attribute_values = ddb_scalar_types | ddb_set_types | ddb_list_type
113
130
114
131
ddb_items = dictionaries (
115
- keys = text ( min_size = 1 , max_size = 255 ) ,
132
+ keys = ddb_attribute_names ,
116
133
values = ddb_scalar_types | ddb_set_types | ddb_list_type
117
134
)
118
135
0 commit comments