diff --git a/HISTORY b/HISTORY
index c37c1c2..f2fc06d 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,3 +1,9 @@
+1.7.2
+=====
+
+- Fix an edge case bug where validators are not executed against empty list/dict
+  fields.
+
 1.7.1
 =====
 
diff --git a/poetry.lock b/poetry.lock
index 352e8c2..e8a2532 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -81,7 +81,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
 
 [[package]]
 name = "charset-normalizer"
-version = "2.0.3"
+version = "2.0.4"
 description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
 category = "dev"
 optional = false
@@ -267,7 +267,7 @@ six = ">=1.0.0,<2.0.0"
 
 [[package]]
 name = "more-itertools"
-version = "8.8.0"
+version = "8.9.0"
 description = "More routines for operating on iterables, beyond itertools"
 category = "dev"
 optional = false
@@ -627,8 +627,8 @@ chardet = [
     {file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"},
 ]
 charset-normalizer = [
-    {file = "charset-normalizer-2.0.3.tar.gz", hash = "sha256:c46c3ace2d744cfbdebceaa3c19ae691f53ae621b39fd7570f59d14fb7f2fd12"},
-    {file = "charset_normalizer-2.0.3-py3-none-any.whl", hash = "sha256:88fce3fa5b1a84fdcb3f603d889f723d1dd89b26059d0123ca435570e848d5e1"},
+    {file = "charset-normalizer-2.0.4.tar.gz", hash = "sha256:f23667ebe1084be45f6ae0538e4a5a865206544097e4e8bbcacf42cd02a348f3"},
+    {file = "charset_normalizer-2.0.4-py3-none-any.whl", hash = "sha256:0c8911edd15d19223366a194a513099a302055a962bca2cec0f54b8b63175d8b"},
 ]
 colorama = [
     {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
@@ -777,8 +777,8 @@ more-itertools = [
     {file = "more-itertools-5.0.0.tar.gz", hash = "sha256:38a936c0a6d98a38bcc2d03fdaaedaba9f412879461dd2ceff8d37564d6522e4"},
     {file = "more_itertools-5.0.0-py2-none-any.whl", hash = "sha256:c0a5785b1109a6bd7fac76d6837fd1feca158e54e521ccd2ae8bfe393cc9d4fc"},
     {file = "more_itertools-5.0.0-py3-none-any.whl", hash = "sha256:fe7a7cae1ccb57d33952113ff4fa1bc5f879963600ed74918f1236e212ee50b9"},
-    {file = "more-itertools-8.8.0.tar.gz", hash = "sha256:83f0308e05477c68f56ea3a888172c78ed5d5b3c282addb67508e7ba6c8f813a"},
-    {file = "more_itertools-8.8.0-py3-none-any.whl", hash = "sha256:2cf89ec599962f2ddc4d568a05defc40e0a587fbc10d5989713638864c36be4d"},
+    {file = "more-itertools-8.9.0.tar.gz", hash = "sha256:8c746e0d09871661520da4f1241ba6b908dc903839733c8203b552cffaf173bd"},
+    {file = "more_itertools-8.9.0-py3-none-any.whl", hash = "sha256:70401259e46e216056367a0a6034ee3d3f95e0bf59d3aa6a4eb77837171ed996"},
 ]
 msgpack = [
     {file = "msgpack-1.0.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:b6d9e2dae081aa35c44af9c4298de4ee72991305503442a5c74656d82b581fe9"},
diff --git a/pyproject.toml b/pyproject.toml
index a32e56f..7b85791 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
 [tool.poetry]
 name = "odin"
-version = "1.7.1"
+version = "1.7.2"
 description = "Data-structure definition/validation/traversal, mapping and serialisation toolkit for Python"
 authors = ["Tim Savage <tim@savage.company>"]
 license = "BSD-3-Clause"
diff --git a/src/odin/fields/__init__.py b/src/odin/fields/__init__.py
index 3703290..0da7e18 100644
--- a/src/odin/fields/__init__.py
+++ b/src/odin/fields/__init__.py
@@ -40,6 +40,7 @@ __all__ = (
     "IPv4Field",
     "IPv6Field",
     "IPv46Field",
+    "ListField",
     "UUIDField",
     "DictField",
     "ObjectField",
@@ -76,6 +77,7 @@ class Field(BaseField):
         "required": "This field is required.",
     }
     data_type_name = None
+    empty_values = EMPTY_VALUES
 
     def __init__(
         self,
@@ -170,7 +172,7 @@ class Field(BaseField):
         raise NotImplementedError()
 
     def run_validators(self, value):
-        if value in EMPTY_VALUES:
+        if value in self.empty_values:
             return
 
         errors = []
@@ -186,7 +188,7 @@ class Field(BaseField):
     def validate(self, value):
         if (
             self.choice_values
-            and (value not in EMPTY_VALUES)
+            and (value not in self.empty_values)
             and (value not in self.choice_values)
         ):
             msg = self.error_messages["invalid_choice"] % value
@@ -315,7 +317,7 @@ class ScalarField(Field):
             self.validators.append(MaxValueValidator(max_value))
 
     def to_python(self, value):
-        if value in EMPTY_VALUES:
+        if value in self.empty_values:
             return
         try:
             return self.scalar_type(value)
@@ -366,7 +368,7 @@ class DateField(_IsoFormatMixin, Field):
     data_type_name = "ISO-8601 Date"
 
     def to_python(self, value):
-        if value in EMPTY_VALUES:
+        if value in self.empty_values:
             return
         if isinstance(value, datetime.datetime):
             return value.date()
@@ -403,7 +405,7 @@ class TimeField(_IsoFormatMixin, Field):
         self.assume_local = assume_local
 
     def to_python(self, value):
-        if value in EMPTY_VALUES:
+        if value in self.empty_values:
             return
         if isinstance(value, datetime.time):
             return value
@@ -440,7 +442,7 @@ class NaiveTimeField(_IsoFormatMixin, Field):
         self.ignore_timezone = ignore_timezone
 
     def to_python(self, value):
-        if value in EMPTY_VALUES:
+        if value in self.empty_values:
             return
         if isinstance(value, datetime.time):
             if value.tzinfo and self.ignore_timezone:
@@ -491,7 +493,7 @@ class DateTimeField(_IsoFormatMixin, Field):
         self.assume_local = assume_local
 
     def to_python(self, value):
-        if value in EMPTY_VALUES:
+        if value in self.empty_values:
             return
         if isinstance(value, datetime.datetime):
             return value
@@ -528,7 +530,7 @@ class NaiveDateTimeField(_IsoFormatMixin, Field):
         self.ignore_timezone = ignore_timezone
 
     def to_python(self, value):
-        if value in EMPTY_VALUES:
+        if value in self.empty_values:
             return
         if isinstance(value, datetime.datetime):
             if value.tzinfo and self.ignore_timezone:
@@ -570,7 +572,7 @@ class HttpDateTimeField(Field):
     data_type_name = "ISO-1123 DateTime"
 
     def to_python(self, value):
-        if value in EMPTY_VALUES:
+        if value in self.empty_values:
             return
         if isinstance(value, datetime.datetime):
             return value
@@ -607,7 +609,7 @@ class TimeStampField(Field):
     data_type_name = "Integer"
 
     def to_python(self, value):
-        if value in EMPTY_VALUES:
+        if value in self.empty_values:
             return
         if isinstance(value, datetime.datetime):
             return value
@@ -619,7 +621,7 @@ class TimeStampField(Field):
         raise exceptions.ValidationError(msg)
 
     def prepare(self, value):
-        if value in EMPTY_VALUES:
+        if value in self.empty_values:
             return
         if isinstance(value, six.integer_types):
             return long(value)
@@ -632,6 +634,7 @@ class DictField(Field):
         "invalid": "Must be a dict.",
     }
     data_type_name = "Dict"
+    empty_values = (None, "", [], ())
 
     def __init__(self, **options):
         options.setdefault("default", dict)
@@ -656,6 +659,7 @@ class ListField(Field):
         "invalid": "Must be an array.",
     }
     data_type_name = "List"
+    empty_values = (None, "", {}, ())
 
     def __init__(self, **options):
         options.setdefault("default", list)
@@ -783,7 +787,7 @@ class TypedDictField(DictField):
     def validate(self, value):
         super(TypedDictField, self).validate(value)
 
-        if value in EMPTY_VALUES:
+        if value in self.empty_values:
             return
 
         key_errors = []
@@ -811,7 +815,7 @@ class TypedDictField(DictField):
     def run_validators(self, value):
         super(TypedDictField, self).run_validators(value)
 
-        if value in EMPTY_VALUES:
+        if value in self.empty_values:
             return
 
         key_errors = []

diff --git a/tests/test_fields.py b/tests/test_fields.py
index e53546e..456b53c 100644
--- a/tests/test_fields.py
+++ b/tests/test_fields.py
@@ -12,6 +12,7 @@ from odin.validators import (
     MaxValueValidator,
     MaxLengthValidator,
     RegexValidator,
+    MinLengthValidator,
 )
 from odin.exceptions import ValidationError
 
@@ -822,7 +823,7 @@ class TestFields(object):
 
     # DictField ###############################################################
 
-    def test_dictfield_1(self):
+    def test_dictfield__where_null_is_false(self):
         f = DictField()
         pytest.raises(ValidationError, f.clean, None)
         pytest.raises(ValidationError, f.clean, "abc")
@@ -831,18 +832,25 @@ class TestFields(object):
         assert {"foo": "bar"} == f.clean({"foo": "bar"})
         assert f.default == dict
 
-    def test_dictfield_2(self):
+    def test_dictfield__where_null_is_true(self):
         f = DictField(null=True)
-        assert None == f.clean(None)
+        assert None is f.clean(None)
         assert {} == f.clean({})
         pytest.raises(ValidationError, f.clean, "abc")
         pytest.raises(ValidationError, f.clean, 123)
         assert {"foo": "bar"} == f.clean({"foo": "bar"})
 
-    # ArrayField ##############################################################
+    def test_dictfield__validators_are_executed_on_empty(self):
+        """
+        Ensure that validators are executed even if the field is empty
+        """
+        f = DictField(validators=[MinLengthValidator(1)])
+        pytest.raises(ValidationError, f.clean, {})
+
+    # ListField ##############################################################
 
-    def test_arrayfield_1(self):
-        f = ArrayField()
+    def test_listfield__where_null_is_false(self):
+        f = ListField()
         pytest.raises(ValidationError, f.clean, None)
         pytest.raises(ValidationError, f.clean, "abc")
         pytest.raises(ValidationError, f.clean, 123)
@@ -851,8 +859,8 @@ class TestFields(object):
         assert ["foo", "bar", "$", "eek"], f.clean(["foo", "bar", "$" == "eek"])
         assert f.default == list
 
-    def test_arrayfield_2(self):
-        f = ArrayField(null=True)
+    def test_listfield__where_null_is_true(self):
+        f = ListField(null=True)
         assert None == f.clean(None)
         pytest.raises(ValidationError, f.clean, "abc")
         pytest.raises(ValidationError, f.clean, 123)
@@ -860,9 +868,16 @@ class TestFields(object):
         assert ["foo", "bar"], f.clean(["foo" == "bar"])
         assert ["foo", "bar", "$", "eek"], f.clean(["foo", "bar", "$" == "eek"])
 
+    def test_listfield__validators_are_executed_on_empty(self):
+        """
+        Ensure that validators are executed even if the field is empty
+        """
+        f = ListField(validators=[MinLengthValidator(1)])
+        pytest.raises(ValidationError, f.clean, [])
+
     # TypedListField #########################################################
 
-    def test_typedlistfield_1(self):
+    def test_typedlistfield__where_null_is_false(self):
         f = TypedListField(IntegerField())
         assert "List<Integer>" == f.data_type_name(f)
         pytest.raises(ValidationError, f.clean, None)
@@ -873,7 +888,7 @@ class TestFields(object):
         assert [1, 2, 3], f.clean([1, 2 == 3])
         assert f.default == list
 
-    def test_typedlistfield_2(self):
+    def test_typedlistfield__where_null_is_true(self):
         f = TypedListField(IntegerField(), null=True)
         assert "List<Integer>" == f.data_type_name(f)
         assert None == f.clean(None)

List and Dict fields don't apply validation rules if the array is empty
If a field array contains no items validation rules are not being applied and are treated as if they are None. This is an issue if a validation rule is to ensure there are at least n items in a list or dict.
tests/test_fields.py::TestFields::test_dictfield__validators_are_executed_on_empty tests/test_fields.py::TestFields::test_listfield__where_null_is_false tests/test_fields.py::TestFields::test_listfield__where_null_is_true tests/test_fields.py::TestFields::test_listfield__validators_are_executed_on_empty tests/test_fields.py::TestFields::test_uuid_field_with_bytes[97d4bb2c-54d4-11ef-98f7-fa3cdcf14c24] tests/test_fields.py::TestFields::test_uuid_field_with_bytes[74978c65-53be-3a46-956f-db423e378212] tests/test_fields.py::TestFields::test_uuid_field_with_bytes[e38e0acd-5f2b-4c54-b6d4-1f861127f424] tests/test_fields.py::TestFields::test_uuid_field_with_bytes[4d967b7e-94a5-5f3a-847b-f423558e2fee] tests/test_fields.py::TestFields::test_uuid_field_with_string[97d4bd2a-54d4-11ef-98f7-fa3cdcf14c24] tests/test_fields.py::TestFields::test_uuid_field_with_string[bd76eae7-eb63-3e50-86c7-819b378b5ca8] tests/test_fields.py::TestFields::test_uuid_field_with_string[7fea0cfe-5725-45e0-8820-36c9769cbaf1] tests/test_fields.py::TestFields::test_uuid_field_with_string[bcb641cf-88e2-5bbb-9503-33dc1aee7de9]
tests/test_fields.py::TestField::test_error_messages_no_overrides tests/test_fields.py::TestField::test_error_messages_override_add tests/test_fields.py::TestField::test_set_attributes_from_name tests/test_fields.py::TestField::test_set_attributes_from_name_with_name tests/test_fields.py::TestField::test_set_attributes_from_name_with_verbose_name tests/test_fields.py::TestField::test_as_string[None-None] tests/test_fields.py::TestField::test_as_string[-] tests/test_fields.py::TestField::test_as_string[abc-abc] tests/test_fields.py::TestField::test_as_string[1-1] tests/test_fields.py::TestField::test_as_string[True-True] tests/test_fields.py::TestField::test_as_string[False-False] tests/test_fields.py::TestField::test_choice_doc_test tests/test_fields.py::TestField::test_has_default tests/test_fields.py::TestField::test_has_default_supplied tests/test_fields.py::TestField::test_get_default tests/test_fields.py::TestField::test_get_default_supplied tests/test_fields.py::TestField::test_get_default_callable tests/test_fields.py::TestField::test_value_from_object tests/test_fields.py::TestField::test__repr tests/test_fields.py::TestField::test__deep_copy tests/test_fields.py::TestField::test_run_validators_and_override_validator_message tests/test_fields.py::TestField::test_run_validators_and_override_validator_message_with_params tests/test_fields.py::TestField::test_default_to_python_raises_not_implemented tests/test_fields.py::TestField::test_clean_uses_default_if_value_is_not_provided_is_true tests/test_fields.py::TestField::test_clean_uses_default_if_value_is_not_provided_is_false tests/test_fields.py::TestVirtualField::test_creation_counter tests/test_fields.py::TestVirtualField::test_repr tests/test_fields.py::TestVirtualField::test_default_descriptor_behaviour tests/test_fields.py::TestFields::test_booleanfield_success[field0-True-True] tests/test_fields.py::TestFields::test_booleanfield_success[field1-1-True] tests/test_fields.py::TestFields::test_booleanfield_success[field2-Yes-True] tests/test_fields.py::TestFields::test_booleanfield_success[field3-true-True] tests/test_fields.py::TestFields::test_booleanfield_success[field4-T-True] tests/test_fields.py::TestFields::test_booleanfield_success[field5-1-True] tests/test_fields.py::TestFields::test_booleanfield_success[field6-TRUE-True] tests/test_fields.py::TestFields::test_booleanfield_success[field7-False-False] tests/test_fields.py::TestFields::test_booleanfield_success[field8-0-False] tests/test_fields.py::TestFields::test_booleanfield_success[field9-No-False] tests/test_fields.py::TestFields::test_booleanfield_success[field10-false-False] tests/test_fields.py::TestFields::test_booleanfield_success[field11-FALSE-False] tests/test_fields.py::TestFields::test_booleanfield_success[field12-F-False] tests/test_fields.py::TestFields::test_booleanfield_success[field13-0-False] tests/test_fields.py::TestFields::test_booleanfield_success[field14-None-None] tests/test_fields.py::TestFields::test_booleanfield_failure[field0-None] tests/test_fields.py::TestFields::test_booleanfield_failure[field1-] tests/test_fields.py::TestFields::test_booleanfield_failure[field2-Awesome!] tests/test_fields.py::TestFields::test_stringfield_success[field0-1-1] tests/test_fields.py::TestFields::test_stringfield_success[field1-eek-eek] tests/test_fields.py::TestFields::test_stringfield_success[field2-1-1] tests/test_fields.py::TestFields::test_stringfield_success[field3-None-None] tests/test_fields.py::TestFields::test_stringfield_success[field4--] tests/test_fields.py::TestFields::test_stringfield_success[field5--] tests/test_fields.py::TestFields::test_stringfield_success[field6--] tests/test_fields.py::TestFields::test_stringfield_success[field7-123456-123456] tests/test_fields.py::TestFields::test_stringfield_failure[field0-None] tests/test_fields.py::TestFields::test_stringfield_failure[field1-] tests/test_fields.py::TestFields::test_stringfield_failure[field2-] tests/test_fields.py::TestFields::test_stringfield_failure[field3-] tests/test_fields.py::TestFields::test_stringfield_failure[field4-1234567890a] tests/test_fields.py::TestFields::test_stringfield tests/test_fields.py::TestFields::test_stringfield__handling_of_null_empty[field0-False] tests/test_fields.py::TestFields::test_stringfield__handling_of_null_empty[field1-True] tests/test_fields.py::TestFields::test_stringfield__handling_of_null_empty[field2-False] tests/test_fields.py::TestFields::test_stringfield__handling_of_null_empty[field3-True] tests/test_fields.py::TestFields::test_stringfield__handling_of_null_empty[field4-True] tests/test_fields.py::TestFields::test_stringfield__handling_of_null_empty[field5-False] tests/test_fields.py::TestFields::test_stringfield__handling_of_null_empty[field6-False] tests/test_fields.py::TestFields::test_urlfield_1 tests/test_fields.py::TestFields::test_integerfield_1 tests/test_fields.py::TestFields::test_integerfield_2 tests/test_fields.py::TestFields::test_integerfield_3 tests/test_fields.py::TestFields::test_floatfield_1 tests/test_fields.py::TestFields::test_floatfield_2 tests/test_fields.py::TestFields::test_floatfield_3 tests/test_fields.py::TestFields::test_datefield_clean_success[field0-2013-11-24-expected0] tests/test_fields.py::TestFields::test_datefield_clean_success[field1-value1-expected1] tests/test_fields.py::TestFields::test_datefield_clean_success[field2-value2-expected2] tests/test_fields.py::TestFields::test_datefield_clean_success[field3-None-None] tests/test_fields.py::TestFields::test_datefield_clean_failure[field0-None] tests/test_fields.py::TestFields::test_datefield_clean_failure[field1-abc] tests/test_fields.py::TestFields::test_datefield_clean_failure[field2-123] tests/test_fields.py::TestFields::test_datefield_as_string[field0-value0-2013-11-24] tests/test_fields.py::TestFields::test_timefield_1 tests/test_fields.py::TestFields::test_timefield_2 tests/test_fields.py::TestFields::test_timefield_as_string[field0-value0-12:44:12.000012] tests/test_fields.py::TestFields::test_timefield_as_string[field1-value1-12:44:12.000012+00:00] tests/test_fields.py::TestFields::test_naivetimefield__clean_valid_values[target0-18:43:00.000Z-expected0] tests/test_fields.py::TestFields::test_naivetimefield__clean_valid_values[target1-18:43:00.000Z-expected1] tests/test_fields.py::TestFields::test_naivetimefield__clean_valid_values[target2-value2-expected2] tests/test_fields.py::TestFields::test_naivetimefield__clean_valid_values[target3-None-None] tests/test_fields.py::TestFields::test_naivetimefield__clean_valid_values[target4-18:43:00.000Z-expected4] tests/test_fields.py::TestFields::test_naivetimefield__clean_valid_values[target5-18:43:00.000Z-expected5] tests/test_fields.py::TestFields::test_naivetimefield__clean_valid_values[target6-value6-expected6] tests/test_fields.py::TestFields::test_naivetimefield__clean_valid_values[target7-18:43:00.000Z-expected7] tests/test_fields.py::TestFields::test_naivetimefield__clean_valid_values[target8-18:43:00.000Z-expected8] tests/test_fields.py::TestFields::test_naivetimefield__clean_valid_values[target9-value9-expected9] tests/test_fields.py::TestFields::test_naivetimefield__clean_invalid_values[target0-None] tests/test_fields.py::TestFields::test_naivetimefield__clean_invalid_values[target1-abc] tests/test_fields.py::TestFields::test_naivetimefield__clean_invalid_values[target2-123] tests/test_fields.py::TestFields::test_naivetimefield__clean_invalid_values[target3-abc] tests/test_fields.py::TestFields::test_naivetimefield__clean_invalid_values[target4-123] tests/test_fields.py::TestFields::test_naivetimefield__clean_invalid_values[target5-None] tests/test_fields.py::TestFields::test_naivetimefield__clean_invalid_values[target6-abc] tests/test_fields.py::TestFields::test_naivetimefield__clean_invalid_values[target7-123] tests/test_fields.py::TestFields::test_naivetimefield__prepare[target0-value0-expected0] tests/test_fields.py::TestFields::test_naivetimefield__prepare[target1-value1-expected1] tests/test_fields.py::TestFields::test_datetimefield_1 tests/test_fields.py::TestFields::test_datetimefield_2 tests/test_fields.py::TestFields::test_datetimefield_as_string[field0-value0-2013-11-24T18:43:00+10:00] tests/test_fields.py::TestFields::test_datetimefield_as_string[field1-value1-2013-11-24T18:43:00+00:00] tests/test_fields.py::TestFields::test_naivedatetimefield__clean_valid_values[target0-2013-11-24T18:43:00.000Z-expected0] tests/test_fields.py::TestFields::test_naivedatetimefield__clean_valid_values[target1-2013-11-24 tests/test_fields.py::TestFields::test_naivedatetimefield__clean_valid_values[target2-value2-expected2] tests/test_fields.py::TestFields::test_naivedatetimefield__clean_valid_values[target3-None-None] tests/test_fields.py::TestFields::test_naivedatetimefield__clean_valid_values[target4-2013-11-24T18:43:00.000Z-expected4] tests/test_fields.py::TestFields::test_naivedatetimefield__clean_valid_values[target5-2013-11-24 tests/test_fields.py::TestFields::test_naivedatetimefield__clean_valid_values[target6-value6-expected6] tests/test_fields.py::TestFields::test_naivedatetimefield__clean_valid_values[target7-2013-11-24T18:43:00.000Z-expected7] tests/test_fields.py::TestFields::test_naivedatetimefield__clean_valid_values[target8-2013-11-24 tests/test_fields.py::TestFields::test_naivedatetimefield__clean_valid_values[target9-value9-expected9] tests/test_fields.py::TestFields::test_naivedatetimefield__clean_invalid_values[target0-None] tests/test_fields.py::TestFields::test_naivedatetimefield__clean_invalid_values[target1-abc] tests/test_fields.py::TestFields::test_naivedatetimefield__clean_invalid_values[target2-123] tests/test_fields.py::TestFields::test_naivedatetimefield__clean_invalid_values[target3-abc] tests/test_fields.py::TestFields::test_naivedatetimefield__clean_invalid_values[target4-123] tests/test_fields.py::TestFields::test_naivedatetimefield__clean_invalid_values[target5-None] tests/test_fields.py::TestFields::test_naivedatetimefield__clean_invalid_values[target6-abc] tests/test_fields.py::TestFields::test_naivedatetimefield__clean_invalid_values[target7-123] tests/test_fields.py::TestFields::test_naivedatetimefield__prepare[target0-value0-expected0] tests/test_fields.py::TestFields::test_naivedatetimefield__prepare[target1-value1-expected1] tests/test_fields.py::TestFields::test_httpdatetimefield_1 tests/test_fields.py::TestFields::test_httpdatetimefield_2 tests/test_fields.py::TestFields::test_httpdate_time_field__as_string tests/test_fields.py::TestFields::test_timestampfield_1 tests/test_fields.py::TestFields::test_timestampfield_2 tests/test_fields.py::TestFields::test_timestampfield_3 tests/test_fields.py::TestFields::test_dictfield__where_null_is_false tests/test_fields.py::TestFields::test_dictfield__where_null_is_true tests/test_fields.py::TestFields::test_typedlistfield__where_null_is_false tests/test_fields.py::TestFields::test_typedlistfield__where_null_is_true tests/test_fields.py::TestFields::test_typed_list_field_dynamic_type_name tests/test_fields.py::TestFields::test_typed_list_field__with_choices[target0-None] tests/test_fields.py::TestFields::test_typed_list_field__with_choices[target1-expected1] tests/test_fields.py::TestFields::test_typed_list_field__with_choices[target2-expected2] tests/test_fields.py::TestFields::test_typeddictfield_1 tests/test_fields.py::TestFields::test_typeddictfield_2 tests/test_fields.py::TestFields::test_typeddictfield_3 tests/test_fields.py::TestFields::test_typeddictfield_nested_typed_array tests/test_fields.py::TestFields::test_typeddictfield_validate tests/test_fields.py::TestFields::test_typed_dict_field_dynamic_type_name tests/test_fields.py::TestFields::test_valid_values[field0-foo@example.company-foo@example.company] tests/test_fields.py::TestFields::test_valid_values[field1-127.0.0.1-127.0.0.1] tests/test_fields.py::TestFields::test_valid_values[field2-::1-::1] tests/test_fields.py::TestFields::test_valid_values[field3-1:2:3:4:5:6:7:8-1:2:3:4:5:6:7:8] tests/test_fields.py::TestFields::test_valid_values[field4-127.0.0.1-127.0.0.1] tests/test_fields.py::TestFields::test_valid_values[field5-::1-::1] tests/test_fields.py::TestFields::test_valid_values[field6-1:2:3:4:5:6:7:8-1:2:3:4:5:6:7:8] tests/test_fields.py::TestFields::test_uuid_field_with_uuid_objects[value0] tests/test_fields.py::TestFields::test_uuid_field_with_uuid_objects[value1] tests/test_fields.py::TestFields::test_uuid_field_with_uuid_objects[value2] tests/test_fields.py::TestFields::test_uuid_field_with_uuid_objects[value3] tests/test_fields.py::TestFields::test_uuid_field_with_16_bytes_sequence[bytes-uuid1] tests/test_fields.py::TestFields::test_uuid_field_with_16_bytes_sequence[bytes-uuid3] tests/test_fields.py::TestFields::test_uuid_field_with_16_bytes_sequence[bytes-uuid4] tests/test_fields.py::TestFields::test_uuid_field_with_16_bytes_sequence[bytes-uuid5] tests/test_fields.py::TestFields::test_uuid_field_with_int[0] tests/test_fields.py::TestFields::test_uuid_field_with_int[1] tests/test_fields.py::TestFields::test_uuid_field_with_int[2] tests/test_fields.py::TestFields::test_uuid_field_with_int[3] tests/test_fields.py::TestFields::test_uuid_field_invalid_int[-1] tests/test_fields.py::TestFields::test_uuid_field_invalid_int[-2] tests/test_fields.py::TestFields::test_uuid_field_invalid_bytes[\xac] tests/test_fields.py::TestFields::test_uuid_field_invalid_bytes[\xad] tests/test_fields.py::TestFields::test_uuid_field_invalid_fields[value0] tests/test_fields.py::TestFields::test_uuid_field_invalid_fields[value1] tests/test_fields.py::TestFields::test_uuid_field_invalid_fields[value2] tests/test_fields.py::TestFields::test_uuid_field_invalid_fields[value3] tests/test_fields.py::TestFields::test_uuid_field_invalid_fields[value4] tests/test_fields.py::TestFields::test_uuid_field_invalid_fields[value5] tests/test_fields.py::TestFields::test_uuid_field_invalid_hex[sometext] tests/test_fields.py::TestFields::test_uuid_field_invalid_hex[01010101-0101-0101-0101-01010101010] tests/test_fields.py::TestFields::test_uuid_field_non_str_value tests/test_fields.py::TestFields::test_uuid_field_invalid_non_str_value tests/test_fields.py::TestFields::test_uuid_field__none tests/test_fields.py::TestFields::test_uuid_field__not_none