Merge pull request #134 from claytron/issue_17_deferred_docstring
update deferred decorator to retain original info
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
import datetime
|
||||
import decimal
|
||||
import functools
|
||||
import time
|
||||
import itertools
|
||||
import pprint
|
||||
@@ -2124,6 +2125,7 @@ class deferred(object):
|
||||
""" A decorator which can be used to define deferred schema values
|
||||
(missing values, widgets, validators, etc.)"""
|
||||
def __init__(self, wrapped):
|
||||
functools.update_wrapper(self, wrapped)
|
||||
self.wrapped = wrapped
|
||||
|
||||
def __call__(self, node, kw):
|
||||
|
||||
@@ -2369,7 +2369,7 @@ class TestSchemaNode(unittest.TestCase):
|
||||
|
||||
def test_required_deferred(self):
|
||||
from colander import deferred
|
||||
node = self._makeOne(None, missing=deferred('123'))
|
||||
node = self._makeOne(None, missing=deferred(lambda: '123'))
|
||||
self.assertEqual(node.required, True)
|
||||
|
||||
def test_deserialize_no_validator(self):
|
||||
@@ -2457,7 +2457,7 @@ class TestSchemaNode(unittest.TestCase):
|
||||
from colander import Invalid
|
||||
typ = DummyType()
|
||||
node = self._makeOne(typ)
|
||||
node.missing = deferred('123')
|
||||
node.missing = deferred(lambda: '123')
|
||||
self.assertRaises(Invalid, node.deserialize, null)
|
||||
|
||||
def test_serialize(self):
|
||||
@@ -2492,7 +2492,7 @@ class TestSchemaNode(unittest.TestCase):
|
||||
from colander import null
|
||||
typ = DummyType()
|
||||
node = self._makeOne(typ)
|
||||
node.default = deferred('abc')
|
||||
node.default = deferred(lambda: 'abc')
|
||||
self.assertEqual(node.serialize(), null)
|
||||
|
||||
def test_add(self):
|
||||
@@ -3029,7 +3029,7 @@ class TestDeferred(unittest.TestCase):
|
||||
return deferred(wrapped)
|
||||
|
||||
def test_ctor(self):
|
||||
wrapped = '123'
|
||||
wrapped = lambda: 'foo'
|
||||
inst = self._makeOne(wrapped)
|
||||
self.assertEqual(inst.wrapped, wrapped)
|
||||
|
||||
@@ -3044,6 +3044,14 @@ class TestDeferred(unittest.TestCase):
|
||||
result= inst(n, k)
|
||||
self.assertEqual(result, 'abc')
|
||||
|
||||
def test_retain_func_details(self):
|
||||
def wrapper_func(node, kw):
|
||||
"""Can you hear me now?"""
|
||||
pass # pragma: no cover
|
||||
inst = self._makeOne(wrapper_func)
|
||||
self.assertEqual(inst.__doc__, 'Can you hear me now?')
|
||||
self.assertEqual(inst.__name__, 'wrapper_func')
|
||||
|
||||
class TestSchema(unittest.TestCase):
|
||||
def test_alias(self):
|
||||
from colander import Schema
|
||||
|
||||
Reference in New Issue
Block a user