From 2bc84d143155324f8b332d88d5713aeb275c901e Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Thu, 27 May 2010 08:54:34 +0000 Subject: [PATCH] - Raise a ``TypeError`` when bogus keyword arguments are passed to ``colander.SchemaNode``. --- CHANGES.txt | 3 +++ colander/__init__.py | 12 +++++++----- colander/tests.py | 3 +++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 83c2338..859721c 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -14,6 +14,9 @@ Next release Positional. This attribute isn't an API; it's used only internally for reporting. +- Raise a ``TypeError`` when bogus keyword arguments are passed to + ``colander.SchemaNode``. + 0.6.2 (2010-05-08) ------------------ diff --git a/colander/__init__.py b/colander/__init__.py index 28fbcdf..e68abf9 100644 --- a/colander/__init__.py +++ b/colander/__init__.py @@ -1112,11 +1112,13 @@ class SchemaNode(object): def __init__(self, typ, *children, **kw): self.typ = typ - self.validator = kw.get('validator', None) - self.default = kw.get('default', _missing) - self.name = kw.get('name', '') - self.title = kw.get('title', self.name.capitalize()) - self.description = kw.get('description', '') + self.validator = kw.pop('validator', None) + self.default = kw.pop('default', _missing) + self.name = kw.pop('name', '') + self.title = kw.pop('title', self.name.capitalize()) + self.description = kw.pop('description', '') + if kw: + raise TypeError('Unknown keyword arguments: %s' % repr(kw)) self.children = list(children) def __repr__(self): diff --git a/colander/tests.py b/colander/tests.py index a9151e4..268be5e 100644 --- a/colander/tests.py +++ b/colander/tests.py @@ -1281,6 +1281,9 @@ class TestSchemaNode(unittest.TestCase): self.assertEqual(node.name, 'name') self.assertEqual(node.title, 'Name') + def test_ctor_with_bad_kwarg(self): + self.assertRaises(TypeError, self._makeOne, None, 0, foo=1) + def test_ctor_with_title(self): node = self._makeOne(None, 0, validator=1, default=2, name='name', title='title')