diff --git a/CHANGES.rst b/CHANGES.rst
index b004541..a547106 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -1,3 +1,12 @@
+Unreleased
+==================
+
+- :class:`colander.All` now supports :attr:`colander.Invalid.msg` being ``None``
+  or a list, otherwise :meth:`colander.Invalid.asdict` crashes with
+  ``TypeError: sequence item 1: expected str instance, NoneType found``.
+  See https://github.com/Pylons/colander/pull/333 and
+  https://github.com/Pylons/colander/issues/194
+
 1.7.0 (2019-02-01)
 ==================
 
diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt
index 0537c2f..e38080f 100644
--- a/CONTRIBUTORS.txt
+++ b/CONTRIBUTORS.txt
@@ -140,3 +140,4 @@ Contributors
 - Gabriela Surita, 2017/01/31
 - Manuel Vázquez, 2018/11/22
 - Kirill Kuzminykh, 2019/01/27
+- Rangel Reale, 2020/01/09
diff --git a/colander/__init__.py b/colander/__init__.py
index 104fe8a..d6cb81e 100644
--- a/colander/__init__.py
+++ b/colander/__init__.py
@@ -257,9 +257,18 @@ class All(object):
                 excs.append(e)
 
         if excs:
-            exc = Invalid(node, [exc.msg for exc in excs])
-            for e in excs:
-                exc.children.extend(e.children)
+            children = []
+            messages = []
+            for exception in excs:
+                if exception.msg is not None:
+                    if is_nonstr_iter(exception.msg):
+                        messages.extend(exception.msg)
+                    else:
+                        messages.append(exception.msg)
+                children.extend(exception.children)
+
+            exc = Invalid(node, messages)
+            exc.children.extend(children)
             raise exc
 
 

Nested validators: colander.All and colander.Any
Hi,

it would be great if meta-validators (All, Any and so) could be nested in each other.
For example:

```
   validator=colander.All(
                           colander.Any( 
                                            first_validator,
                                            second_validator 
                                       ),
                           third_validator
                     )
```

The latest version doesn't support this because an error occurs during the "propagation" of result message in asdict:

```
    errors['.'.join(keyparts)] = '; '.join(interpolate(msgs))
```

(a similar problem is fixed here a6b85dd9ba1042aa1ffcdd327eb4f635c802d418 )

Is there any other way to do it? Tnx.

diff --git a/colander/tests/test_colander.py b/colander/tests/test_colander.py
index 90b4d91..e435deb 100644
--- a/colander/tests/test_colander.py
+++ b/colander/tests/test_colander.py
@@ -171,6 +171,18 @@ class TestInvalid(unittest.TestCase):
                 },
             )
 
+    def test_asdict_with_msg_none(self):
+        # see https://github.com/Pylons/colander/pull/333
+        from colander import All
+
+        node1 = DummySchemaNode(None, 'node1')
+        validator1 = DummyValidator('validator1')
+        validator2 = DummyValidatorWithMsgNone()
+        validator = All(validator1, validator2)
+        exc = invalid_exc(validator, node1, None)
+        # TypeError: sequence item 1: expected str instance, NoneType found
+        exc.asdict()
+
     def test___str__(self):
         from colander import Positional
 
@@ -4673,6 +4685,14 @@ class DummyValidator(object):
             raise e
 
 
+class DummyValidatorWithMsgNone(object):
+    def __call__(self, node, value):
+        from colander import Invalid
+
+        e = Invalid(node)
+        raise e
+
+
 class Uncooperative(object):
     def __str__(self):
         raise ValueError('I wont cooperate')

pip install -e .[dev]
parse_log_pytest
pytest
nose coverage pytest
3.6
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs @ file:///opt/conda/conda-bld/attrs_1642510447205/work
certifi==2021.5.30
-e git+https://github.com/Pylons/colander.git@670d15394bf158cc974a9cdf4b9c7b496e2d5322#egg=colander
coverage==6.2
importlib-metadata @ file:///tmp/build/80754af9/importlib-metadata_1631916693255/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
iso8601==1.1.0
more-itertools @ file:///tmp/build/80754af9/more-itertools_1637733554872/work
nose==1.3.7
packaging @ file:///tmp/build/80754af9/packaging_1637314298585/work
pluggy @ file:///tmp/build/80754af9/pluggy_1615976315926/work
py @ file:///opt/conda/conda-bld/py_1644396412707/work
pyparsing @ file:///tmp/build/80754af9/pyparsing_1635766073266/work
pytest==6.2.4
toml @ file:///tmp/build/80754af9/toml_1616166611790/work
translationstring==1.4
typing_extensions @ file:///opt/conda/conda-bld/typing_extensions_1647553014482/work
zipp @ file:///tmp/build/80754af9/zipp_1633618647012/work

name: colander
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - attrs=21.4.0=pyhd3eb1b0_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - importlib-metadata=4.8.1=py36h06a4308_0
  - importlib_metadata=4.8.1=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - more-itertools=8.12.0=pyhd3eb1b0_0
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - packaging=21.3=pyhd3eb1b0_0
  - pip=21.2.2=py36h06a4308_0
  - pluggy=0.13.1=py36h06a4308_0
  - py=1.11.0=pyhd3eb1b0_0
  - pyparsing=3.0.4=pyhd3eb1b0_0
  - pytest=6.2.4=py36h06a4308_2
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - toml=0.10.2=pyhd3eb1b0_0
  - typing_extensions=4.1.1=pyh06a4308_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zipp=3.6.0=pyhd3eb1b0_0
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - coverage==6.2
      - iso8601==1.1.0
      - nose==1.3.7
      - translationstring==1.4
prefix: /opt/conda/envs/colander

colander/tests/test_colander.py::TestInvalid::test_asdict_with_msg_none
colander/tests/test_colander.py::TestFunctional::test_deserialize_ok colander/tests/test_colander.py::TestFunctional::test_flatten_ok colander/tests/test_colander.py::TestFunctional::test_flatten_mapping_has_no_name colander/tests/test_colander.py::TestFunctional::test_unflatten_ok colander/tests/test_colander.py::TestFunctional::test_unflatten_mapping_no_name colander/tests/test_colander.py::TestFunctional::test_flatten_unflatten_roundtrip colander/tests/test_colander.py::TestFunctional::test_set_value colander/tests/test_colander.py::TestFunctional::test_get_value colander/tests/test_colander.py::TestFunctional::test_invalid_asdict colander/tests/test_colander.py::TestFunctional::test_invalid_asdict_translation_callback
colander/tests/test_colander.py::TestInvalid::test___setitem__fails colander/tests/test_colander.py::TestInvalid::test___setitem__succeeds colander/tests/test_colander.py::TestInvalid::test___str__ colander/tests/test_colander.py::TestInvalid::test__keyname_no_parent colander/tests/test_colander.py::TestInvalid::test__keyname_nonpositional_parent colander/tests/test_colander.py::TestInvalid::test__keyname_positional colander/tests/test_colander.py::TestInvalid::test_add colander/tests/test_colander.py::TestInvalid::test_add_positional colander/tests/test_colander.py::TestInvalid::test_asdict colander/tests/test_colander.py::TestInvalid::test_asdict_with_all_validator colander/tests/test_colander.py::TestInvalid::test_asdict_with_all_validator_functional colander/tests/test_colander.py::TestInvalid::test_ctor colander/tests/test_colander.py::TestInvalid::test_messages_msg_None colander/tests/test_colander.py::TestInvalid::test_messages_msg_iterable colander/tests/test_colander.py::TestInvalid::test_messages_msg_not_iterable colander/tests/test_colander.py::TestInvalid::test_paths colander/tests/test_colander.py::TestAll::test_Invalid_children colander/tests/test_colander.py::TestAll::test_failure colander/tests/test_colander.py::TestAll::test_success colander/tests/test_colander.py::TestAny::test_Invalid_children colander/tests/test_colander.py::TestAny::test_failure colander/tests/test_colander.py::TestAny::test_success colander/tests/test_colander.py::TestFunction::test_deprecated_message colander/tests/test_colander.py::TestFunction::test_deprecated_message_warning colander/tests/test_colander.py::TestFunction::test_error_message_adds_mapping_to_configured_message colander/tests/test_colander.py::TestFunction::test_error_message_adds_mapping_to_return_message colander/tests/test_colander.py::TestFunction::test_error_message_does_not_overwrite_configured_domain colander/tests/test_colander.py::TestFunction::test_error_message_does_not_overwrite_returned_domain colander/tests/test_colander.py::TestFunction::test_fail_function_returns_False colander/tests/test_colander.py::TestFunction::test_fail_function_returns_empty_string colander/tests/test_colander.py::TestFunction::test_fail_function_returns_string colander/tests/test_colander.py::TestFunction::test_msg_and_message_error colander/tests/test_colander.py::TestFunction::test_propagation colander/tests/test_colander.py::TestFunction::test_success_function_returns_True colander/tests/test_colander.py::TestRange::test_max_failure colander/tests/test_colander.py::TestRange::test_max_failure_msg_override colander/tests/test_colander.py::TestRange::test_min_failure colander/tests/test_colander.py::TestRange::test_min_failure_msg_override colander/tests/test_colander.py::TestRange::test_success_min_and_max colander/tests/test_colander.py::TestRange::test_success_minimum_bound_only colander/tests/test_colander.py::TestRange::test_success_no_bounds colander/tests/test_colander.py::TestRange::test_success_upper_bound_only colander/tests/test_colander.py::TestRegex::test_invalid_regexs colander/tests/test_colander.py::TestRegex::test_regex_not_string colander/tests/test_colander.py::TestRegex::test_valid_regex colander/tests/test_colander.py::TestEmail::test_empty_email colander/tests/test_colander.py::TestEmail::test_invalid_emails colander/tests/test_colander.py::TestEmail::test_valid_emails colander/tests/test_colander.py::TestLength::test_max_failure colander/tests/test_colander.py::TestLength::test_max_failure_msg_override colander/tests/test_colander.py::TestLength::test_min_failure colander/tests/test_colander.py::TestLength::test_min_failure_msg_override colander/tests/test_colander.py::TestLength::test_success_min_and_max colander/tests/test_colander.py::TestLength::test_success_minimum_bound_only colander/tests/test_colander.py::TestLength::test_success_no_bounds colander/tests/test_colander.py::TestLength::test_success_upper_bound_only colander/tests/test_colander.py::TestOneOf::test_failure colander/tests/test_colander.py::TestOneOf::test_success colander/tests/test_colander.py::TestNoneOf::test_failure colander/tests/test_colander.py::TestNoneOf::test_success colander/tests/test_colander.py::TestContainsOnly::test_failure colander/tests/test_colander.py::TestContainsOnly::test_failure_with_custom_error_template colander/tests/test_colander.py::TestContainsOnly::test_success colander/tests/test_colander.py::Test_luhnok::test_fail colander/tests/test_colander.py::Test_luhnok::test_fail2 colander/tests/test_colander.py::Test_luhnok::test_fail3 colander/tests/test_colander.py::Test_luhnok::test_success colander/tests/test_colander.py::Test_url_validator::test_add_sample_dos colander/tests/test_colander.py::Test_url_validator::test_file_raises colander/tests/test_colander.py::Test_url_validator::test_ipv4 colander/tests/test_colander.py::Test_url_validator::test_ipv6 colander/tests/test_colander.py::Test_url_validator::test_it_failure colander/tests/test_colander.py::Test_url_validator::test_it_success colander/tests/test_colander.py::Test_url_validator::test_website_no_scheme colander/tests/test_colander.py::Test_file_uri_validator::test_file_with_path colander/tests/test_colander.py::Test_file_uri_validator::test_file_with_path_windows colander/tests/test_colander.py::Test_file_uri_validator::test_it_failure colander/tests/test_colander.py::Test_file_uri_validator::test_it_success colander/tests/test_colander.py::Test_file_uri_validator::test_no_path_fails colander/tests/test_colander.py::TestUUID::test_failure_invalid_length colander/tests/test_colander.py::TestUUID::test_failure_not_hexadecimal colander/tests/test_colander.py::TestUUID::test_failure_random_string colander/tests/test_colander.py::TestUUID::test_failure_with_invalid_urn_ns colander/tests/test_colander.py::TestUUID::test_success_hexadecimal colander/tests/test_colander.py::TestUUID::test_success_upper_case colander/tests/test_colander.py::TestUUID::test_success_with_braces colander/tests/test_colander.py::TestUUID::test_success_with_dashes colander/tests/test_colander.py::TestUUID::test_success_with_urn_ns colander/tests/test_colander.py::TestSchemaType::test_cstruct_children colander/tests/test_colander.py::TestSchemaType::test_flatten colander/tests/test_colander.py::TestSchemaType::test_flatten_listitem colander/tests/test_colander.py::TestSchemaType::test_get_value colander/tests/test_colander.py::TestSchemaType::test_set_value colander/tests/test_colander.py::TestSchemaType::test_unflatten colander/tests/test_colander.py::TestMapping::test_cstruct_children colander/tests/test_colander.py::TestMapping::test_cstruct_children_cstruct_is_null colander/tests/test_colander.py::TestMapping::test_ctor_bad_unknown colander/tests/test_colander.py::TestMapping::test_ctor_good_unknown colander/tests/test_colander.py::TestMapping::test_deserialize_no_subnodes colander/tests/test_colander.py::TestMapping::test_deserialize_not_a_mapping colander/tests/test_colander.py::TestMapping::test_deserialize_null colander/tests/test_colander.py::TestMapping::test_deserialize_ok colander/tests/test_colander.py::TestMapping::test_deserialize_subnode_missing_default colander/tests/test_colander.py::TestMapping::test_deserialize_subnodes_raise colander/tests/test_colander.py::TestMapping::test_deserialize_unknown_preserve colander/tests/test_colander.py::TestMapping::test_deserialize_unknown_raise colander/tests/test_colander.py::TestMapping::test_flatten colander/tests/test_colander.py::TestMapping::test_flatten_listitem colander/tests/test_colander.py::TestMapping::test_get_value colander/tests/test_colander.py::TestMapping::test_serialize_no_subnodes colander/tests/test_colander.py::TestMapping::test_serialize_not_a_mapping colander/tests/test_colander.py::TestMapping::test_serialize_null colander/tests/test_colander.py::TestMapping::test_serialize_ok colander/tests/test_colander.py::TestMapping::test_serialize_value_has_drop colander/tests/test_colander.py::TestMapping::test_serialize_value_is_null colander/tests/test_colander.py::TestMapping::test_serialize_with_unknown colander/tests/test_colander.py::TestMapping::test_set_value colander/tests/test_colander.py::TestMapping::test_unflatten colander/tests/test_colander.py::TestMapping::test_unflatten_nested colander/tests/test_colander.py::TestTuple::test_cstruct_children_cstruct_is_null colander/tests/test_colander.py::TestTuple::test_cstruct_children_justright colander/tests/test_colander.py::TestTuple::test_cstruct_children_toofew colander/tests/test_colander.py::TestTuple::test_cstruct_children_toomany colander/tests/test_colander.py::TestTuple::test_deserialize_no_subnodes colander/tests/test_colander.py::TestTuple::test_deserialize_not_iterable colander/tests/test_colander.py::TestTuple::test_deserialize_null colander/tests/test_colander.py::TestTuple::test_deserialize_ok colander/tests/test_colander.py::TestTuple::test_deserialize_subnodes_raise colander/tests/test_colander.py::TestTuple::test_deserialize_toobig colander/tests/test_colander.py::TestTuple::test_deserialize_toosmall colander/tests/test_colander.py::TestTuple::test_flatten colander/tests/test_colander.py::TestTuple::test_flatten_listitem colander/tests/test_colander.py::TestTuple::test_get_value colander/tests/test_colander.py::TestTuple::test_get_value_bad_path colander/tests/test_colander.py::TestTuple::test_serialize_no_subnodes colander/tests/test_colander.py::TestTuple::test_serialize_not_iterable colander/tests/test_colander.py::TestTuple::test_serialize_null colander/tests/test_colander.py::TestTuple::test_serialize_ok colander/tests/test_colander.py::TestTuple::test_serialize_subnodes_raise colander/tests/test_colander.py::TestTuple::test_serialize_toobig colander/tests/test_colander.py::TestTuple::test_serialize_toosmall colander/tests/test_colander.py::TestTuple::test_set_value colander/tests/test_colander.py::TestTuple::test_set_value_bad_path colander/tests/test_colander.py::TestTuple::test_unflatten colander/tests/test_colander.py::TestSet::test_deserialize_empty_set colander/tests/test_colander.py::TestSet::test_deserialize_no_iter colander/tests/test_colander.py::TestSet::test_deserialize_null colander/tests/test_colander.py::TestSet::test_deserialize_str_no_iter colander/tests/test_colander.py::TestSet::test_deserialize_valid colander/tests/test_colander.py::TestSet::test_serialize colander/tests/test_colander.py::TestSet::test_serialize_null colander/tests/test_colander.py::TestList::test_deserialize_empty_set colander/tests/test_colander.py::TestList::test_deserialize_no_iter colander/tests/test_colander.py::TestList::test_deserialize_null colander/tests/test_colander.py::TestList::test_deserialize_str_no_iter colander/tests/test_colander.py::TestList::test_deserialize_valid colander/tests/test_colander.py::TestList::test_serialize colander/tests/test_colander.py::TestList::test_serialize_null colander/tests/test_colander.py::TestSequence::test_alias colander/tests/test_colander.py::TestSequence::test_cstruct_children_cstruct_is_non_null colander/tests/test_colander.py::TestSequence::test_cstruct_children_cstruct_is_null colander/tests/test_colander.py::TestSequence::test_deserialize_no_null colander/tests/test_colander.py::TestSequence::test_deserialize_no_subnodes colander/tests/test_colander.py::TestSequence::test_deserialize_not_iterable colander/tests/test_colander.py::TestSequence::test_deserialize_not_iterable_accept_scalar colander/tests/test_colander.py::TestSequence::test_deserialize_ok colander/tests/test_colander.py::TestSequence::test_deserialize_string_accept_scalar colander/tests/test_colander.py::TestSequence::test_deserialize_subnodes_raise colander/tests/test_colander.py::TestSequence::test_flatten colander/tests/test_colander.py::TestSequence::test_flatten_listitem colander/tests/test_colander.py::TestSequence::test_flatten_with_integer colander/tests/test_colander.py::TestSequence::test_getvalue colander/tests/test_colander.py::TestSequence::test_serialize_drop colander/tests/test_colander.py::TestSequence::test_serialize_no_subnodes colander/tests/test_colander.py::TestSequence::test_serialize_not_iterable colander/tests/test_colander.py::TestSequence::test_serialize_not_iterable_accept_scalar colander/tests/test_colander.py::TestSequence::test_serialize_null colander/tests/test_colander.py::TestSequence::test_serialize_ok colander/tests/test_colander.py::TestSequence::test_serialize_string_accept_scalar colander/tests/test_colander.py::TestSequence::test_serialize_subnodes_raise colander/tests/test_colander.py::TestSequence::test_setvalue colander/tests/test_colander.py::TestSequence::test_unflatten colander/tests/test_colander.py::TestString::test_alias colander/tests/test_colander.py::TestString::test_deserialize_emptystring colander/tests/test_colander.py::TestString::test_deserialize_from_nonstring_obj colander/tests/test_colander.py::TestString::test_deserialize_from_utf16 colander/tests/test_colander.py::TestString::test_deserialize_from_utf8 colander/tests/test_colander.py::TestString::test_deserialize_nonunicode_from_None colander/tests/test_colander.py::TestString::test_deserialize_uncooperative colander/tests/test_colander.py::TestString::test_deserialize_unicode_from_None colander/tests/test_colander.py::TestString::test_serialize_emptystring colander/tests/test_colander.py::TestString::test_serialize_encoding_with_non_string_type colander/tests/test_colander.py::TestString::test_serialize_nonunicode_to_None colander/tests/test_colander.py::TestString::test_serialize_null colander/tests/test_colander.py::TestString::test_serialize_string_with_high_unresolveable_high_order_chars colander/tests/test_colander.py::TestString::test_serialize_to_utf16 colander/tests/test_colander.py::TestString::test_serialize_to_utf8 colander/tests/test_colander.py::TestString::test_serialize_uncooperative colander/tests/test_colander.py::TestString::test_serialize_unicode_to_None colander/tests/test_colander.py::TestInteger::test_alias colander/tests/test_colander.py::TestInteger::test_deserialize_emptystring colander/tests/test_colander.py::TestInteger::test_deserialize_fails colander/tests/test_colander.py::TestInteger::test_deserialize_ok colander/tests/test_colander.py::TestInteger::test_deserialize_strict colander/tests/test_colander.py::TestInteger::test_serialize_fails colander/tests/test_colander.py::TestInteger::test_serialize_none colander/tests/test_colander.py::TestInteger::test_serialize_null colander/tests/test_colander.py::TestInteger::test_serialize_ok colander/tests/test_colander.py::TestInteger::test_serialize_strict_float colander/tests/test_colander.py::TestInteger::test_serialize_strict_int colander/tests/test_colander.py::TestInteger::test_serialize_truncates colander/tests/test_colander.py::TestInteger::test_serialize_zero colander/tests/test_colander.py::TestFloat::test_deserialize_fails colander/tests/test_colander.py::TestFloat::test_deserialize_ok colander/tests/test_colander.py::TestFloat::test_serialize_emptystring colander/tests/test_colander.py::TestFloat::test_serialize_fails colander/tests/test_colander.py::TestFloat::test_serialize_none colander/tests/test_colander.py::TestFloat::test_serialize_null colander/tests/test_colander.py::TestFloat::test_serialize_ok colander/tests/test_colander.py::TestFloat::test_serialize_zero colander/tests/test_colander.py::TestDecimal::test_deserialize_fails colander/tests/test_colander.py::TestDecimal::test_deserialize_ok colander/tests/test_colander.py::TestDecimal::test_deserialize_with_normalize colander/tests/test_colander.py::TestDecimal::test_deserialize_with_quantize colander/tests/test_colander.py::TestDecimal::test_serialize_emptystring colander/tests/test_colander.py::TestDecimal::test_serialize_fails colander/tests/test_colander.py::TestDecimal::test_serialize_none colander/tests/test_colander.py::TestDecimal::test_serialize_normalize colander/tests/test_colander.py::TestDecimal::test_serialize_null colander/tests/test_colander.py::TestDecimal::test_serialize_ok colander/tests/test_colander.py::TestDecimal::test_serialize_quantize_no_rounding colander/tests/test_colander.py::TestDecimal::test_serialize_quantize_with_rounding_up colander/tests/test_colander.py::TestDecimal::test_serialize_zero colander/tests/test_colander.py::TestMoney::test_deserialize_rounds_up colander/tests/test_colander.py::TestMoney::test_serialize_rounds_up colander/tests/test_colander.py::TestBoolean::test_alias colander/tests/test_colander.py::TestBoolean::test_deserialize colander/tests/test_colander.py::TestBoolean::test_deserialize_null colander/tests/test_colander.py::TestBoolean::test_deserialize_unstringable colander/tests/test_colander.py::TestBoolean::test_serialize colander/tests/test_colander.py::TestBoolean::test_serialize_null colander/tests/test_colander.py::TestBooleanCustomFalseReprs::test_deserialize colander/tests/test_colander.py::TestBooleanCustomFalseAndTrueReprs::test_deserialize colander/tests/test_colander.py::TestBooleanCustomSerializations::test_serialize colander/tests/test_colander.py::TestGlobalObject::test__pkg_resources_style_irrresolveable_absolute colander/tests/test_colander.py::TestGlobalObject::test__pkg_resources_style_irrresolveable_relative colander/tests/test_colander.py::TestGlobalObject::test__pkg_resources_style_resolve_absolute colander/tests/test_colander.py::TestGlobalObject::test__pkg_resources_style_resolve_relative_is_dot colander/tests/test_colander.py::TestGlobalObject::test__pkg_resources_style_resolve_relative_nocurrentpackage colander/tests/test_colander.py::TestGlobalObject::test__pkg_resources_style_resolve_relative_startswith_colon colander/tests/test_colander.py::TestGlobalObject::test__pkg_resources_style_resolve_relative_startswith_dot colander/tests/test_colander.py::TestGlobalObject::test__zope_dottedname_style_irresolveable_absolute colander/tests/test_colander.py::TestGlobalObject::test__zope_dottedname_style_irresolveable_relative_is_dot colander/tests/test_colander.py::TestGlobalObject::test__zope_dottedname_style_resolve_relative colander/tests/test_colander.py::TestGlobalObject::test__zope_dottedname_style_resolve_relative_is_dot colander/tests/test_colander.py::TestGlobalObject::test__zope_dottedname_style_resolve_relative_leading_dots colander/tests/test_colander.py::TestGlobalObject::test__zope_dottedname_style_resolveable_absolute colander/tests/test_colander.py::TestGlobalObject::test__zope_dottedname_style_resolveable_relative colander/tests/test_colander.py::TestGlobalObject::test_deserialize_None colander/tests/test_colander.py::TestGlobalObject::test_deserialize_class_fail colander/tests/test_colander.py::TestGlobalObject::test_deserialize_class_ok colander/tests/test_colander.py::TestGlobalObject::test_deserialize_notastring colander/tests/test_colander.py::TestGlobalObject::test_deserialize_null colander/tests/test_colander.py::TestGlobalObject::test_deserialize_style_raises colander/tests/test_colander.py::TestGlobalObject::test_deserialize_using_pkgresources_style colander/tests/test_colander.py::TestGlobalObject::test_deserialize_using_zope_dottedname_style colander/tests/test_colander.py::TestGlobalObject::test_serialize_class colander/tests/test_colander.py::TestGlobalObject::test_serialize_fail colander/tests/test_colander.py::TestGlobalObject::test_serialize_null colander/tests/test_colander.py::TestGlobalObject::test_serialize_ok colander/tests/test_colander.py::TestGlobalObject::test_zope_dottedname_style_irrresolveable_absolute colander/tests/test_colander.py::TestGlobalObject::test_zope_dottedname_style_irrresolveable_relative colander/tests/test_colander.py::TestGlobalObject::test_zope_dottedname_style_resolve_absolute colander/tests/test_colander.py::TestGlobalObject::test_zope_dottedname_style_resolve_relative_nocurrentpackage colander/tests/test_colander.py::TestDateTime::test_ctor_default_tzinfo_None colander/tests/test_colander.py::TestDateTime::test_ctor_default_tzinfo_non_None colander/tests/test_colander.py::TestDateTime::test_ctor_default_tzinfo_not_specified colander/tests/test_colander.py::TestDateTime::test_deserialize_date colander/tests/test_colander.py::TestDateTime::test_deserialize_datetime_with_custom_format colander/tests/test_colander.py::TestDateTime::test_deserialize_empty colander/tests/test_colander.py::TestDateTime::test_deserialize_invalid_ParseError colander/tests/test_colander.py::TestDateTime::test_deserialize_naive_with_default_tzinfo colander/tests/test_colander.py::TestDateTime::test_deserialize_none_tzinfo colander/tests/test_colander.py::TestDateTime::test_deserialize_null colander/tests/test_colander.py::TestDateTime::test_deserialize_slashes_invalid colander/tests/test_colander.py::TestDateTime::test_deserialize_success colander/tests/test_colander.py::TestDateTime::test_serialize_none colander/tests/test_colander.py::TestDateTime::test_serialize_null colander/tests/test_colander.py::TestDateTime::test_serialize_with_date colander/tests/test_colander.py::TestDateTime::test_serialize_with_garbage colander/tests/test_colander.py::TestDateTime::test_serialize_with_naive_datetime colander/tests/test_colander.py::TestDateTime::test_serialize_with_naive_datetime_and_custom_format colander/tests/test_colander.py::TestDateTime::test_serialize_with_none_tzinfo_naive_datetime colander/tests/test_colander.py::TestDateTime::test_serialize_with_none_tzinfo_naive_datetime_custom_format colander/tests/test_colander.py::TestDateTime::test_serialize_with_tzware_datetime colander/tests/test_colander.py::TestDate::test_deserialize_date_with_custom_format colander/tests/test_colander.py::TestDate::test_deserialize_empty colander/tests/test_colander.py::TestDate::test_deserialize_invalid_ParseError colander/tests/test_colander.py::TestDate::test_deserialize_invalid_weird colander/tests/test_colander.py::TestDate::test_deserialize_null colander/tests/test_colander.py::TestDate::test_deserialize_success_date colander/tests/test_colander.py::TestDate::test_deserialize_success_datetime colander/tests/test_colander.py::TestDate::test_serialize_date_with_custom_format colander/tests/test_colander.py::TestDate::test_serialize_none colander/tests/test_colander.py::TestDate::test_serialize_null colander/tests/test_colander.py::TestDate::test_serialize_with_date colander/tests/test_colander.py::TestDate::test_serialize_with_datetime colander/tests/test_colander.py::TestDate::test_serialize_with_garbage colander/tests/test_colander.py::TestTime::test_deserialize_empty colander/tests/test_colander.py::TestTime::test_deserialize_four_digit_string colander/tests/test_colander.py::TestTime::test_deserialize_invalid_ParseError colander/tests/test_colander.py::TestTime::test_deserialize_missing_seconds colander/tests/test_colander.py::TestTime::test_deserialize_null colander/tests/test_colander.py::TestTime::test_deserialize_success_datetime colander/tests/test_colander.py::TestTime::test_deserialize_success_time colander/tests/test_colander.py::TestTime::test_deserialize_three_digit_string colander/tests/test_colander.py::TestTime::test_deserialize_two_digit_string colander/tests/test_colander.py::TestTime::test_serialize_none colander/tests/test_colander.py::TestTime::test_serialize_null colander/tests/test_colander.py::TestTime::test_serialize_with_datetime colander/tests/test_colander.py::TestTime::test_serialize_with_garbage colander/tests/test_colander.py::TestTime::test_serialize_with_time colander/tests/test_colander.py::TestTime::test_serialize_with_zero_time colander/tests/test_colander.py::TestEnum::test_deserialize_failure colander/tests/test_colander.py::TestEnum::test_deserialize_failure_typ colander/tests/test_colander.py::TestEnum::test_deserialize_name colander/tests/test_colander.py::TestEnum::test_deserialize_null colander/tests/test_colander.py::TestEnum::test_deserialize_value_int colander/tests/test_colander.py::TestEnum::test_deserialize_value_str colander/tests/test_colander.py::TestEnum::test_non_unique_failure colander/tests/test_colander.py::TestEnum::test_non_unique_failure2 colander/tests/test_colander.py::TestEnum::test_serialize_failure colander/tests/test_colander.py::TestEnum::test_serialize_name colander/tests/test_colander.py::TestEnum::test_serialize_null colander/tests/test_colander.py::TestEnum::test_serialize_value_int colander/tests/test_colander.py::TestEnum::test_serialize_value_str colander/tests/test_colander.py::TestSchemaNode::test___contains__ colander/tests/test_colander.py::TestSchemaNode::test___delitem__failure colander/tests/test_colander.py::TestSchemaNode::test___delitem__success colander/tests/test_colander.py::TestSchemaNode::test___getitem__failure colander/tests/test_colander.py::TestSchemaNode::test___getitem__success colander/tests/test_colander.py::TestSchemaNode::test___iter__ colander/tests/test_colander.py::TestSchemaNode::test___setitem__no_override colander/tests/test_colander.py::TestSchemaNode::test___setitem__override colander/tests/test_colander.py::TestSchemaNode::test_add colander/tests/test_colander.py::TestSchemaNode::test_bind colander/tests/test_colander.py::TestSchemaNode::test_bind_with_after_bind colander/tests/test_colander.py::TestSchemaNode::test_clone colander/tests/test_colander.py::TestSchemaNode::test_clone_mapping_references colander/tests/test_colander.py::TestSchemaNode::test_clone_with_modified_schema_instance colander/tests/test_colander.py::TestSchemaNode::test_cstruct_children colander/tests/test_colander.py::TestSchemaNode::test_cstruct_children_warning colander/tests/test_colander.py::TestSchemaNode::test_ctor_children_kwarg_typ colander/tests/test_colander.py::TestSchemaNode::test_ctor_no_title colander/tests/test_colander.py::TestSchemaNode::test_ctor_with_description colander/tests/test_colander.py::TestSchemaNode::test_ctor_with_kwarg_typ colander/tests/test_colander.py::TestSchemaNode::test_ctor_with_preparer colander/tests/test_colander.py::TestSchemaNode::test_ctor_with_title colander/tests/test_colander.py::TestSchemaNode::test_ctor_with_unknown_kwarg colander/tests/test_colander.py::TestSchemaNode::test_ctor_with_widget colander/tests/test_colander.py::TestSchemaNode::test_ctor_without_preparer colander/tests/test_colander.py::TestSchemaNode::test_ctor_without_type colander/tests/test_colander.py::TestSchemaNode::test_declarative_name_reassignment colander/tests/test_colander.py::TestSchemaNode::test_deserialize_appstruct_deferred colander/tests/test_colander.py::TestSchemaNode::test_deserialize_no_validator colander/tests/test_colander.py::TestSchemaNode::test_deserialize_noargs_uses_default colander/tests/test_colander.py::TestSchemaNode::test_deserialize_null_can_be_used_as_missing colander/tests/test_colander.py::TestSchemaNode::test_deserialize_preparer_before_missing_check colander/tests/test_colander.py::TestSchemaNode::test_deserialize_value_is_null_no_missing colander/tests/test_colander.py::TestSchemaNode::test_deserialize_value_is_null_with_missing colander/tests/test_colander.py::TestSchemaNode::test_deserialize_value_is_null_with_missing_msg colander/tests/test_colander.py::TestSchemaNode::test_deserialize_value_with_interpolated_missing_msg colander/tests/test_colander.py::TestSchemaNode::test_deserialize_with_multiple_preparers colander/tests/test_colander.py::TestSchemaNode::test_deserialize_with_preparer colander/tests/test_colander.py::TestSchemaNode::test_deserialize_with_unbound_validator colander/tests/test_colander.py::TestSchemaNode::test_deserialize_with_validator colander/tests/test_colander.py::TestSchemaNode::test_insert colander/tests/test_colander.py::TestSchemaNode::test_new_sets_order colander/tests/test_colander.py::TestSchemaNode::test_raise_invalid colander/tests/test_colander.py::TestSchemaNode::test_repr colander/tests/test_colander.py::TestSchemaNode::test_required_deferred colander/tests/test_colander.py::TestSchemaNode::test_required_false colander/tests/test_colander.py::TestSchemaNode::test_required_true colander/tests/test_colander.py::TestSchemaNode::test_serialize colander/tests/test_colander.py::TestSchemaNode::test_serialize_default_deferred colander/tests/test_colander.py::TestSchemaNode::test_serialize_noargs_uses_default colander/tests/test_colander.py::TestSchemaNode::test_serialize_value_is_null_no_default colander/tests/test_colander.py::TestSchemaNode::test_serialize_value_is_null_with_default colander/tests/test_colander.py::TestSchemaNodeSubclassing::test_deferred_methods_dont_quite_work_yet colander/tests/test_colander.py::TestSchemaNodeSubclassing::test_functions_can_be_deferred colander/tests/test_colander.py::TestSchemaNodeSubclassing::test_method_values_can_rely_on_binding colander/tests/test_colander.py::TestSchemaNodeSubclassing::test_nodes_can_be_deffered colander/tests/test_colander.py::TestSchemaNodeSubclassing::test_nonmethod_values_can_be_deferred_though colander/tests/test_colander.py::TestSchemaNodeSubclassing::test_nonmethod_values_can_rely_on_after_bind colander/tests/test_colander.py::TestSchemaNodeSubclassing::test_schema_child_names_conflict_with_value_names_in_subclass colander/tests/test_colander.py::TestSchemaNodeSubclassing::test_schema_child_names_conflict_with_value_names_in_superclass colander/tests/test_colander.py::TestSchemaNodeSubclassing::test_schema_child_names_conflict_with_value_names_notused colander/tests/test_colander.py::TestSchemaNodeSubclassing::test_schema_child_names_conflict_with_value_names_used colander/tests/test_colander.py::TestSchemaNodeSubclassing::test_subclass_title_overwritten_by_constructor colander/tests/test_colander.py::TestSchemaNodeSubclassing::test_subclass_uses_missing colander/tests/test_colander.py::TestSchemaNodeSubclassing::test_subclass_uses_title colander/tests/test_colander.py::TestSchemaNodeSubclassing::test_subclass_uses_validator_method colander/tests/test_colander.py::TestSchemaNodeSubclassing::test_subclass_value_overridden_by_constructor colander/tests/test_colander.py::TestSchemaNodeSubclassing::test_subelement_title_not_overwritten colander/tests/test_colander.py::TestMappingSchemaInheritance::test_insert_before_failure colander/tests/test_colander.py::TestMappingSchemaInheritance::test_multiple_inheritance colander/tests/test_colander.py::TestMappingSchemaInheritance::test_single_inheritance colander/tests/test_colander.py::TestMappingSchemaInheritance::test_single_inheritance2 colander/tests/test_colander.py::TestMappingSchemaInheritance::test_single_inheritance_with_insert_before colander/tests/test_colander.py::TestDeferred::test___call__ colander/tests/test_colander.py::TestDeferred::test_ctor colander/tests/test_colander.py::TestDeferred::test_retain_func_details colander/tests/test_colander.py::TestDeferred::test_w_callable_instance_no_name colander/tests/test_colander.py::TestDeferred::test_w_callable_instance_no_name_or_doc colander/tests/test_colander.py::TestSchema::test_alias colander/tests/test_colander.py::TestSchema::test_deserialize_drop colander/tests/test_colander.py::TestSchema::test_imperative_with_implicit_schema_type colander/tests/test_colander.py::TestSchema::test_it colander/tests/test_colander.py::TestSchema::test_schema_with_cloned_nodes colander/tests/test_colander.py::TestSchema::test_serialize_drop_default colander/tests/test_colander.py::TestSchema::test_title_munging colander/tests/test_colander.py::TestSequenceSchema::test_clone_with_sequence_schema colander/tests/test_colander.py::TestSequenceSchema::test_deserialize_drop colander/tests/test_colander.py::TestSequenceSchema::test_fail_toofew colander/tests/test_colander.py::TestSequenceSchema::test_fail_toomany colander/tests/test_colander.py::TestSequenceSchema::test_imperative_with_implicit_schema_type colander/tests/test_colander.py::TestSequenceSchema::test_serialize_drop_default colander/tests/test_colander.py::TestSequenceSchema::test_succeed colander/tests/test_colander.py::TestTupleSchema::test_imperative_with_implicit_schema_type colander/tests/test_colander.py::TestTupleSchema::test_it colander/tests/test_colander.py::TestImperative::test_deserialize_ok colander/tests/test_colander.py::TestImperative::test_flatten_mapping_has_no_name colander/tests/test_colander.py::TestImperative::test_flatten_ok colander/tests/test_colander.py::TestImperative::test_flatten_unflatten_roundtrip colander/tests/test_colander.py::TestImperative::test_get_value colander/tests/test_colander.py::TestImperative::test_invalid_asdict colander/tests/test_colander.py::TestImperative::test_invalid_asdict_translation_callback colander/tests/test_colander.py::TestImperative::test_set_value colander/tests/test_colander.py::TestImperative::test_unflatten_mapping_no_name colander/tests/test_colander.py::TestImperative::test_unflatten_ok colander/tests/test_colander.py::TestDeclarative::test_deserialize_ok colander/tests/test_colander.py::TestDeclarative::test_flatten_mapping_has_no_name colander/tests/test_colander.py::TestDeclarative::test_flatten_ok colander/tests/test_colander.py::TestDeclarative::test_flatten_unflatten_roundtrip colander/tests/test_colander.py::TestDeclarative::test_get_value colander/tests/test_colander.py::TestDeclarative::test_invalid_asdict colander/tests/test_colander.py::TestDeclarative::test_invalid_asdict_translation_callback colander/tests/test_colander.py::TestDeclarative::test_set_value colander/tests/test_colander.py::TestDeclarative::test_unflatten_mapping_no_name colander/tests/test_colander.py::TestDeclarative::test_unflatten_ok colander/tests/test_colander.py::TestUltraDeclarative::test_deserialize_ok colander/tests/test_colander.py::TestUltraDeclarative::test_flatten_mapping_has_no_name colander/tests/test_colander.py::TestUltraDeclarative::test_flatten_ok colander/tests/test_colander.py::TestUltraDeclarative::test_flatten_unflatten_roundtrip colander/tests/test_colander.py::TestUltraDeclarative::test_get_value colander/tests/test_colander.py::TestUltraDeclarative::test_invalid_asdict colander/tests/test_colander.py::TestUltraDeclarative::test_invalid_asdict_translation_callback colander/tests/test_colander.py::TestUltraDeclarative::test_set_value colander/tests/test_colander.py::TestUltraDeclarative::test_unflatten_mapping_no_name colander/tests/test_colander.py::TestUltraDeclarative::test_unflatten_ok colander/tests/test_colander.py::TestDeclarativeWithInstantiate::test_deserialize_ok colander/tests/test_colander.py::TestDeclarativeWithInstantiate::test_flatten_mapping_has_no_name colander/tests/test_colander.py::TestDeclarativeWithInstantiate::test_flatten_ok colander/tests/test_colander.py::TestDeclarativeWithInstantiate::test_flatten_unflatten_roundtrip colander/tests/test_colander.py::TestDeclarativeWithInstantiate::test_get_value colander/tests/test_colander.py::TestDeclarativeWithInstantiate::test_invalid_asdict colander/tests/test_colander.py::TestDeclarativeWithInstantiate::test_invalid_asdict_translation_callback colander/tests/test_colander.py::TestDeclarativeWithInstantiate::test_set_value colander/tests/test_colander.py::TestDeclarativeWithInstantiate::test_unflatten_mapping_no_name colander/tests/test_colander.py::TestDeclarativeWithInstantiate::test_unflatten_ok colander/tests/test_colander.py::Test_null::test___nonzero__ colander/tests/test_colander.py::Test_null::test___repr__ colander/tests/test_colander.py::Test_null::test_pickling colander/tests/test_colander.py::Test_required::test___repr__ colander/tests/test_colander.py::Test_required::test_pickling colander/tests/test_colander.py::Test_drop::test___repr__ colander/tests/test_colander.py::Test_drop::test_pickling
colander/__init__.py CONTRIBUTORS.txt CHANGES.rst
colander/__init__.py CONTRIBUTORS.txt CHANGES.rst